問題
使用qtdesigner設計好大體的軟件結構,需要使用代碼進行批量修改控件樣式,self.ui.x 會被解釋為訪問 self.ui 中名為 x 的屬性,而不是將 x 作為變量名來解析
,此時需要通過字符串動態訪問 self.ui 中的按鈕對象
for i in range(20):x = f"pushButton_{i}"self.pushButton_name = self.ui.xself.pushButton_name.setStyleSheet("font-size: 18px; padding: 10px;")
修改后的代碼
for i in range(20):print(i + 1) # 輸出1-20x = 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 中的按鈕對象。