zoukankan      html  css  js  c++  java
  • pyqt(二) 创建第一个程序(helloworld)解决object has no attribute 'setCentralWidget'

    1.运行Qt Creator

    QtCreator主界面分为了6个模式:欢迎模式、编辑模式、设计模式、Debug调试模式、项目模式和帮助模式,分别由左侧的6个图标进行切换,对应的快捷键是Ctrl + 数字1到6。现在显示的就是欢迎界面,这里可以看到一些入门教程、开发的项目列表、Qt提供的示例程序,单击一个示例程序就可以直接打开该项目。单击左侧的Get Started Now会进入帮助模式,并打开Qt Creator指南,刚接触Qt的同学可以把里面的内容简单看下,当然,帮助中的内容是全英文的。

    2.创建项目或文件

    其实我们并不用QT创建项目,只用它可视化的编辑一个UI文件,也就是界面文件。我们用文件--新建项目或文件(ctrl+n)创建一个QT文件,Qt Designer Form,如下图:

    选择界面模板:

    设置文件名称和路径,这里名称可以设置为main,注意名称和路径上都不要有中文。如下图所示。

    我把这个ui文件存在我的一个python项目中了。 

     

    添加版本控制:

    根据需要自己配置吧,这些小项目,其实不需要控制。

     

    打开以后应该就是这个样子了,拖拖拽拽,放控件就可以了。

    3.编译ui文件到py

    打开pycharm

    在ui文件上点右键,找到PYQT5(我们自己设的分类名字)--PyUIC,

    运行后,会在同目录出现一个同名py文件。

    4.给py文件创建执行:

    在这个py文件底部增加:

    import sys
    if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = Ui_MainWindow()
    w = QtWidgets.QMainWindow()
    ex.setupUi(w)
    w.show()
    sys.exit(app.exec_())

    这个时候就可以运行了。

    和在QtCreator看到的一样就对了。

    5.在外部调用这个界面

     5.1

    import sys
    from PyQt5 import QtWidgets
    from mainwindow import  Ui_MainWindow
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        ex = Ui_MainWindow()
        w = QtWidgets.QMainWindow()
        ex.setupUi(w)
        w.show()
        sys.exit(app.exec_())

    5.2

    import sys
    from PyQt5 import QtWidgets
    from mainwindow import  Ui_MainWindow
    class MainWindow(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            super(MainWindow, self).__init__(parent=parent)
            ui = Ui_MainWindow()
            ui.setupUi(self)
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())

    5.3

    import sys
    from PyQt5 import QtWidgets
    from mainwindow import  Ui_MainWindow
    class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        def __init__(self, parent=None):
            super(MainWindow, self).__init__(parent=parent)
            self.setupUi(self)
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())

    这三种方法都避免了

    object has no attribute 'setCentralWidget'

    错误

  • 相关阅读:
    python详解json模块
    postman---post请求数据类型
    postman---postman发送请求
    SpringBoot之集成通用Mapper
    Mybatis-generator/通用Mapper/Mybatis-Plus对比
    spring-data-JPA repository自定义方法规则
    JPA之@GeneratedValue注解
    Java工具类NumberUtils使用
    shell函数
    Maven的生命周期
  • 原文地址:https://www.cnblogs.com/jackadam/p/8270702.html
Copyright © 2011-2022 走看看