PyQt:从类外部访问元素

时间:2016-04-19 05:47:53

标签: pyqt

首先,我想说明我的问题与此非常相似:Accessing GUI elements from outside the GUI class。但由于我是pyQt的新手,我想要更多的帮助。

我有从Qt Designer

导出的design.py文件
# -*- coding: utf-8 -*-

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_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(150, 94)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.lineEdit = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(20, 10, 113, 27))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(30, 40, 85, 27))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

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

导入主类:

# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore
import sys
import design

class ExampleApp(QtGui.QMainWindow, design.Ui_MainWindow):
    def __init__(self, parent=None):
        super(ExampleApp, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.button_function)

    def button_function(self):
        self.lineEdit.setText('results') 

def main():
    app = QtGui.QApplication(sys.argv)
    form = ExampleApp()
    form.show()
    app.exec_()        

if __name__ == '__main__':
    main()      

到目前为止,这么好。我创建了一个窗口,在其中按下pushButton并在editLine中显示一条消息。

这就是我想要实现的目标:我希望pushButton触发类(easy)之外的函数,并且该函数将消息传递给edilTLine (硬)< / em>的。像这样:

    def button_function(self):
        calculations()

def calculations():
    # somehow ...
    self.lineEdit.setText('results') 

def main():
    app = QtGui.QApplication(sys.argv)
    form = ExampleApp()
    form.show()
    app.exec_()        

if __name__ == '__main__':
    main()      

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

这就是你需要的

    def button_function(self):
        calculations(self)

def calculations(obj):
    obj.lineEdit.setText('results')