想用字典创建类对象
您好,我知道这个问题的提出方式有所不同,但是我对Python还是很陌生,因此在浏览现有问答之后,我仍然确实需要一些帮助。预先感谢。
问题-我正在将qt设计器用于UI。我正在尝试在类中定义大量按钮。
我希望能够使用字典并创建一个循环,循环遍历每个键以根据字典的值生成类对象和定义。
现在这就是我正在做的事,我认为这真的很愚蠢:
class MainWindow(QMainWindow):
def __init__(self):
.....
.....
def change_name_of_button(self):
self.apple_label.setText('apple_is_big')
self.orange_label.setText('orange_is_small')
def press_button(self):
self.apple_button.clicked.connect(self.eat_apple)
self.orange_button.clicked.connect(self.eat_orange)
def eat_apple(self):
print('nom nom nom')
#........
那么无论如何我只能拥有一个全局字典,该字典将所有名称/对象存储在键“ apple”下,并且我可以用它来生成类中的所有内容?
我想要这样的东西吗?
dict = {
'Apple': ['apple_label', 'apple_button', 'eat_apple', 'nom nom nom'],
'Orange': [ .... ],
...
}
def xxxx (self):
for key, value in dict:
self.dict[key][1].clicked.connect(self......)
感谢您的帮助。
答案 0 :(得分:0)
您可以使用getattr
:
d = {
'apple': {'label' : 'apple_label', 'button_result': 'nom nom nom'},
'orange': { .... },
...
}
def initialize(self, d):
for name, config in d.items():
getattr(self, f"{name}_label").setText(config["label"])
def callback():
print(config["button_result"])
getattr(self, f"{name}_button").clicked.connect(callback)
请注意,我对词典做了一些修改,您可以根据需要进行安排。