【发布时间】:2019-03-09 08:08:55
【问题描述】:
好的,所以我有一个 QMainWindow 对象,它是我的窗口,它包含几个 QLineEdit 对象。根据条件,单个 QLineEdit 对象可以更改其颜色(颜色:如果错误则为红色)。我正在尝试找到一种方法,在按下按钮时将 all QLineEdit 对象的颜色重置为黑色(默认)。现在,我将它们全部放在一个列表中并遍历它们,这是低效的,因为我有大约 60 个 QLineEdit 对象。
我正在寻找一种方法来一次性为我的窗口中的所有 QLineEdit 对象全局更改样式表。
Ui_MainWindow 是一个由 Qt Designer 自动生成并导入的类。正如 Qt Desginer 告诉我的那样,我对我的类 MainWindow 进行了所有更改,而不是 Ui_MainWindow。
from PyQt5.QtWidgets import QMainWindow
from Windows.main_window import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(QMainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Input validation
self.ui.lineEdit.textChanged.connect(lambda: self.validate(self.ui.lineEdit))
self.ui.lineEdit_2.textChanged.connect(lambda: self.validate(self.ui.lineEdit_2))
self.ui.lineEdit_3.textChanged.connect(lambda: self.validate(self.ui.lineEdit_3))
# Open file button
self.ui.pushButton_Open.clicked.connect(self.open_file_dialog)
self.show()
# If text meets a condition, paint it red
def validate(self, element):
if element.text() == 'foo':
element.setStyleSheet('color: rgb(255,0,0)')
def open_file_dialog(self):
self.reset_stylesheet()
...
def reset_stylesheet(self):
ui_elements = [self.ui.lineEdit, self.ui.lineEdit_2, self.ui.lineEdit_3]
for element in ui_elements:
element.setStyleSheet('color: rgb(0,0,0)')
【问题讨论】: