如何向PyQt类传递变量?基于Qt Designer UI的参数传递需求
解决方法
你的代码有两个关键问题导致无法传递name值到QLabel:
InitUI方法要求传入name参数,但__init__里调用它时没有传参- 主代码块里创建窗口实例时,没有传入需要的
name值
下面是两种可行的修改方式:
方式一:初始化窗口时直接传入name值
修改后的完整代码:
import sys from PyQt5.QtWidgets import * from PyQt5 import uic form_class = uic.loadUiType("untitled.ui")[0] class WindowClass(QMainWindow, form_class) : def __init__(self, name) : # 新增name参数 super().__init__() self.setupUi(self) self.InitUI(name) # 传递name给InitUI def InitUI(self, name): self.hello.setText("Hello. %s"%name) if __name__ == "__main__" : app = QApplication(sys.argv) myWindow = WindowClass("Alice") # 这里传入你要的name值 myWindow.show() app.exec_()
方式二:创建实例后单独调用InitUI传参
如果需要在窗口显示后再动态传入值,可以用这种方式:
import sys from PyQt5.QtWidgets import * from PyQt5 import uic form_class = uic.loadUiType("untitled.ui")[0] class WindowClass(QMainWindow, form_class) : def __init__(self) : super().__init__() self.setupUi(self) # 这里不再自动调用InitUI,留到外部调用 def InitUI(self, name): self.hello.setText("Hello. %s"%name) if __name__ == "__main__" : app = QApplication(sys.argv) myWindow = WindowClass() myWindow.InitUI("Bob") # 在这里传入name值 myWindow.show() app.exec_()
注意:确保你的UI文件里的QLabel对象名称确实是hello,如果名称不一致,需要把代码里的self.hello改成对应对象名。
内容的提问来源于stack exchange,提问作者eClassBox
相关产品推荐
相关产品推荐

