<p>试试看:</p>
<pre><code>from PyQt5.QtWidgets import QLabel, QPushButton, QGridLayout
from PyQt5.QtWidgets import QApplication, QWidget
#from GUI import Ui_Widget
class Ui_Widget(object):
def setupUi(self):
# controls
self.statusLbl = QLabel("Status", self) # + 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(self.statusLbl, 0, 0) # self.
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()
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):
if obj.statusLbl.text() != "working":
obj.statusLbl.setText("working") # <- + obj.
# ...
# 200 lines of code here
#...
else:
obj.statusLbl.setText("not " + obj.statusLbl.text()) # <- + obj.
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
WND = TestApp()
WND.show()
sys.exit(app.exec_())
</code></pre>
<p><a href="https://i.stack.imgur.com/FPToM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/FPToM.png" alt="enter image description here"/></a></p>