当您使用 Qt_Designer 或 Qt_Creator 设计表单时,任何给定小部件的 objectName 始终设置为某物。但是,如果您在代码中创建一个小部件并且稍后需要 objectName,则必须明确分配它。那么小部件分配至少需要两行代码。这看起来非常不雅观。
例子:
button1 = QPushButton('button caption') # at this point objectName is some kind of empty string
button1.setObjectName('button1')
Run Code Online (Sandbox Code Playgroud)
如果您稍后需要查找小部件(即使用 findChild),您必须设置 objectName,否则您就不走运了。
有什么方法可以在没有额外代码行的情况下自动设置 objectName 吗?我查看了PyQt5 参考指南,找不到这样的功能。一个类似的问题被要求在代码审查,但没有得到回应。两行代码并不是世界末日,但似乎是多余的。不知何故,我需要为 Python(第一行)和 Qt 两次分配这个名称。
Jon*_*per 10
button1 = QPushButton('button caption', objectName='button1')
Run Code Online (Sandbox Code Playgroud)
您可以在初始化期间将此扩展到任何 Qt 属性:
button1 = QPushButton(text='button caption', objectName='button1', icon=icon1)
Run Code Online (Sandbox Code Playgroud)
此外,在构造对象时也可以连接信号:
button1 = QPushButton(text='button caption', objectName='button1', clicked=someMethod)
Run Code Online (Sandbox Code Playgroud)
添加的命名参数等效于 button1.clicked.connect(someMethod)