1 daaa2019 OP ![]() |
![]() | 2 chengxiao 2020-03-02 02:38:24 +08:00 你是不是在主线程里更新 UI 了 |
3 Yjx97 2020-03-02 08:24:45 +08:00 QtDesinger 做这个可以 |
4 David1119 2020-03-02 09:17:54 +08:00 试了,没问题。那个事件绑定放在 setupUi 里面,别放 init 里 |
5 daaa2019 OP import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel from PyQt5.QtCore import pyqtSignal, Qt from testLabelText import Ui_Form class MyMainForm(QMainWindow, Ui_Form): def __init__(self): super(MyMainForm, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.printLabel2) # self.initUi() # def initUi(self): def printLabel2(self): print("改变 Label 的文本") self.label.setText("新的文字") print("当前 Label 的文本是", self.label.text()) if __name__ == "__main__": app = QApplication(sys.argv) win = MyMainForm() win.show() sys.exit(app.exec_()) |
8 daaa2019 OP @David1119 昨晚我是放 init 里的 刚刚看你这么说我就把事件在 designer 里绑定,放在 setupUI 了,然后把 init 里的绑定注释掉,也不行。 到底我这个说代码问题呢,还是说系统问题。。。 附上 setupUI 的代码 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(547, 318) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(240, 210, 58, 16)) self.label.setObjectName("label") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(70, 200, 112, 32)) self.pushButton.setObjectName("pushButton") self.retranslateUi(Form) self.pushButton.clicked.connect(Form.printLabel2) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "Label")) self.pushButton.setText(_translate("Form", "PushButton")) |
9 daaa2019 OP 会不会是 pycharm 或者系统的问题? 我复制了 https://github.com/maicss/PyQt5-Chinese-tutorial/blob/master/%E6%8E%A7%E4%BB%B61.md 切换按钮的一段代码进去,也是会出现类似问题…… |
![]() | 10 1462326016 2020-03-02 16:12:32 +08:00 实测,运行你贴在上边的代码,没有问题,实时更改了文字。命令行运行的 |
11 daaa2019 OP @1462326016 妈呀,我这是怎么回事呢 |
12 daaa2019 OP 看来代码应该没问题,那我这种情况,有没有哪位同学告诉我说什么问题呢,系统?还是 pycharm ?还是 pyqt5 的问题? |
![]() | 13 1462326016 2020-03-02 19:27:25 +08:00 @daaa2019 不清楚,忘了说一件事,我是 windows。还有,应该不用怀疑 pycharm,因为 pycharm 就是用命令行帮你运行脚本而已(不调试的话) |
![]() | 14 xiaodouya 2020-09-18 14:51:42 +08:00 def printLabel2(self): print("改变 Label 的文本") self.label.setText("新的文字") #加一行 self.label.repaint() print("当前 Label 的文本是", self.label.text()) |
![]() | 15 yunhu 2020-10-27 18:07:30 +08:00 主线程能直接更新 ui 吗 不行吧 |