当您使用Qt_Designer或Qt_Creator设计表单时,任何给定窗口小部件的objectName始终设置为某个值。但是,如果您在代码中创建窗口小部件并且稍后需要objectName,则必须明确指定它。那么小部件分配至少需要两行代码。这似乎非常不优雅。
示例:
button1 = QPushButton('button caption') # at this point objectName is some kind of empty string
button1.setObjectName('button1')
如果您需要稍后找到小部件(即使用findChild),则必须设置objectName,否则您将失去运气。
有没有办法在没有额外代码行的情况下自动设置objectName?我查看PyQt5 Reference Guide并找不到这样的功能。关于代码审核的similar question was asked,但没有得到答案。两行代码不是世界末日,但似乎是多余的。不知何故,我需要为Python(第一行)分配两次此名称,并再次为Qt分配此名称。
答案 0 :(得分:1)
button1 = QPushButton('button caption', objectName='button1')
您可以在初始化期间将其扩展到任何Qt属性:
button1 = QPushButton(text='button caption', objectName='button1', icon=icon1)
此外,在构造对象时也可以连接信号:
button1 = QPushButton(text='button caption', objectName='button1', clicked=someMethod)
添加的命名参数等同于button1.clicked.connect(someMethod)