【发布时间】:2019-03-10 17:51:52
【问题描述】:
问题:
我正在尝试使用 Python 中的 GUI 编写我的第一个应用程序。我将我的程序分成两个文件:一个带有 GUI (GUI.py),第二个带有程序逻辑 (Test.py)。
我想在程序执行期间从 Test.py 级别更改我的 GUI 中的某些内容(例如带有状态的 QLabel 文本)。
我不知道如何访问任何控件。
代码:
GUI.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QLabel, QPushButton, QGridLayout
class Ui_Widget(object):
def setupUi(self):
# controls
statusLbl = QLabel("Status", self)
changeBtn = QPushButton("&Change text", self)
closeBtn = QPushButton("&Close", self)
#statusLbl.setText("working") # <- here it works, but not in Test.py
# GridLayout
CtrLayout = QGridLayout()
CtrLayout.addWidget(statusLbl, 0, 0)
CtrLayout.addWidget(changeBtn, 0, 1)
CtrLayout.addWidget(closeBtn, 0, 2)
self.setLayout(CtrLayout)
# onClick events
changeBtn.clicked.connect(self.changeText)
closeBtn.clicked.connect(self.closeApp)
#self.setGeometry(20, 20, 300, 100)
#self.setWindowTitle("TEST APP")
self.show()
Test.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication, QWidget
from GUI import Ui_Widget
class TestApp(QWidget, Ui_Widget):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi()
def changeText(self):
generateReport(self) # code moved to separate function for better clarity
def closeApp(self):
self.close()
def generateReport(obj):
statusLbl.setText("working") # <- change of statusLbl.setText is not working
# ...
# 200 lines of code here
#...
statusLbl.setText("not " + statusLbl.text() )
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
WND = TestApp()
sys.exit(app.exec_())
【问题讨论】:
标签: python python-3.x pyqt pyqt5