Eric6与Pycharm使用Pyqt5 编译的区别

Pycharm 下 Pyqt5 的配置图如下 (PyUIC5 和 PyUIC 功能一样)

-o $FileNameWithoutExtension$.py 生成的文件名可以自己设置,

$FileNameWithoutExtension$ 这个相当于原来的文件去掉扩展名。

Eric6 的默认格式是: -o Ui_$FileNameWithoutExtension$.py

Pycharm 里这些都要自己设,Eric6里都帮你建好,点编译就行了。

Eric6 编译的py文件里,最后多上一段:

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

直接可以运行脚本了。下面是 Eric6 生成的对话框代码:

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Pycharm里还要自己写上,因为Qt Designer默认继承的object类,不提供show()显示方法,所以我们生成一个QWidget对象来重载我们设计的Ui_Form类,达到显示效果。

就这点区别,Pycharm这样属于代码与界面分离吧,新人搞了半天才明白,唉。

新建一个文件Main_go.py,导入我们设计的pycharm_test.py文件,实现代码与界面分离。

MainWindow.setCentralWidget(self.centralwidget)
MainWindow.setMenuBar(self.menubar)
MainWindow.setStatusBar(self.statusbar)

上面这三行要删了,不然运行时会报错,(为什么啊,唉,懒的管了。)

下面是Main_go.py的代码,复制粘贴,听说学python就不能去看代码,只要复制过来能用就行了。

from PyQt5 import QtWidgets
from pycharm_test import Ui_MainWindow


class mywindow(QtWidgets.QWidget):
    def __init__(self):
        super(mywindow, self).__init__()
        self.new = Ui_MainWindow()
        self.new.setupUi(self)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = mywindow()
    MainWindow.show()
    sys.exit(app.exec_())

还可以这样继承,可以少写一行代码是吧。-_-!

from PyQt5 import QtWidgets
from pycharm_test import Ui_MainWindow


class mywindow(QtWidgets.QWidget,Ui_MainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.setupUi(self)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = mywindow()
    MainWindow.show()
    sys.exit(app.exec_())

猜你喜欢

转载自my.oschina.net/u/3400565/blog/1557782
今日推荐