【PyQt】getattr动态访问对象的属性
问题
使用qtdesigner设计好大体的软件结构,需要使用代码进行批量修改控件样式,self.ui.x 会被解释为访问 self.ui 中名为 x 的属性,而不是将 x 作为变量名来解析
,此时需要通过字符串动态访问 self.ui 中的按钮对象
for i in range(20):
x = f"pushButton_{i}"
self.pushButton_name = self.ui.x
self.pushButton_name.setStyleSheet("font-size: 18px; padding: 10px;")
修改后的代码
for i in range(20):
print(i + 1) # 输出1-20
x = f"pushButton_{i}"
self.pushButton_name = getattr(self.ui, x) # 动态访问 self.ui 中的按钮对象
self.pushButton_name.setStyleSheet("font-size: 18px; padding: 10px;") # 设置按钮样式
getattr(self.ui, x):
-
getattr 是 Python 的内置函数,用于动态访问对象的属性。
-
getattr(self.ui, x) 相当于 self.ui.pushButton_0, self.ui.pushButton_1, …,self.ui.pushButton_19。
这样可以正确获取 self.ui 中的按钮对象。