簡體   English   中英

如何從Qt Designer導入UI

[英]How to import UI from Qt Designer

我正在制作一個僅包含按鈕的簡單GUI。 我決定使用PyQt Designer。

我決定由Designer生成的UI將在一個文件中,其余的將在另一個將導入UI的模塊中。

PyQt Designer生成的文件為:

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(326, 232)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(104, 30, 101, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))

        self.retranslateUi(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.pushButton.setText(_translate("Form", "PushButton", None))

導入它的主文件如下所示:

import sys
from PyQt4 import QtCore, QtGui
from stacko import Ui_Form

class test(Ui_Form):
    self.pushButton.connect.clicked(self.onClick)
    def onClick(self):
        print "clicked!"

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

我希望單擊該按鈕時,它將打印出“已單擊!”。 由於某種原因,它對我不起作用。 我讀了很多關於類/子類和OOP的文章,但仍然無法正常工作。

引發錯誤: NameError: name 'self' is not defined

這是您的主模塊應如下所示:

import sys
from PyQt4 import QtCore, QtGui
from stacko import Ui_Form

class Test(QtGui.QWidget, Ui_Form):
    def __init__(self):
        super(Test, self).__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.onClick)

    def onClick(self):
        print "clicked!"

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    window = Test()
    window.show()
    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM