代码之家  ›  专栏  ›  技术社区  ›  bfris

Pyqt:有没有更好的方法在代码中设置objectname?

  •  1
  • bfris  · 技术社区  · 6 年前

    当您使用qt_designer或qt_creator设计表单时,任何给定小部件的objectname总是设置为something。但是如果您在代码中创建了一个小部件,并且以后需要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 回复  |  直到 6 年前
        1
  •  3
  •   jonspaceharper    6 年前
    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)