我正在使用PyQt。因为我正在使用Qt样式表,所以我必须将对象名称设置为我想在我的样式规则中指定的小部件(例如“#deleteButton {font-size:14px;}”)。 在代码中,我必须这样做:
...
self.deleteButton = QToolButton(self)
self.deleteButton.setObjectName("deleteButton")
...
但我会这样做:
...
self.deleteButton = QToolButton(self)
self.deleteButton.setObjectName(self.deleteButton.__give_my_instance_name__)
...
如果我找到方法,我可以将它应用于容器中的所有小部件。
提前致谢
答案 0 :(得分:1)
答案 1 :(得分:1)
使用此代码可以更好地完成您要完成的任务:
for name, obj in self.__dict__.iteritems():
if isinstance(obj, QtCore.QObject) and not obj.objectName(): # QObject without a name
obj.setObjectName(name)
在对象创建例程结束时使用它。
答案 2 :(得分:0)
一般答案(附例)。假设我们有一个类Foo
,我们希望它描述它的名称:
class Foo(object):
def my_name_is(self):
for name, obj in globals().items():
if obj is self:
print('My name is ' + repr(name))
bar = Foo()
bar.my_name_is()
# prints: My name is 'bar'
这完美无缺,因为您只有该对象的一个副本。但是,如果您复制它,那么它可以有多个名称:
other_bar = bar
other_bar.my_name_is()
# prints two lines: My name is 'other_bar'
# My name is 'bar'