PyQt:有没有更好的方法在代码中设置objectName?

时间:2018-06-06 17:44:48

标签: python pyqt pyqt5

当您使用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分配此名称。

1 个答案:

答案 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)