Eric6與Pycharm使用Pyqt5 編譯的區別

Pycharm 下 Pyqt5 的配置圖以下 (PyUIC5 和 PyUIC 功能同樣)python

app

 

-o $FileNameWithoutExtension$.py 生成的文件名能夠本身設置,ui

$FileNameWithoutExtension$ 這個至關於原來的文件去掉擴展名。spa

Eric6 的默認格式是: -o Ui_$FileNameWithoutExtension$.py設計

Pycharm 裏這些都要本身設,Eric6裏都幫你建好,點編譯就好了。orm

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類,達到顯示效果。get

就這點區別,Pycharm這樣屬於代碼與界面分離吧,新人搞了半天才明白,唉。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_())
相關文章
相關標籤/搜索