好的,我有一个QMainWindow对象,它是我的窗口,包含几个QLineEdit对象。根据条件,单个QLineEdit对象可以更改其颜色(颜色:错误时为红色)。我试图找到一种方法,在按下按钮时将所有QLineEdit对象的颜色重置为黑色(默认值)。现在,我把它们都放在一个列表中,并对它们进行迭代,这是低效的,因为我有大约60个QLineEdit对象。你知道吗
我正在寻找一种方法,一次全局更改窗口中所有QLineEdit对象的样式表。你知道吗
Ui\u MainWindow是由Qt设计器自动生成并导入的类。我对我的类主窗口进行了所有的更改,而不是像Qt Desginer告诉我的那样对Ui\u主窗口进行更改。你知道吗
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)')
你可以试试这样的东西,但我不知道会快多少。你知道吗
我将connect方法更改为
line.textChanged.connect(self.validate)
,不过您可以在validate
函数中将它们更改回使用element.setProperty
将前两行添加到
__init__
方法。你知道吗或者你可以加上
self.setStyleSheet('QLineEdit{color:#FFF};')
函数中的reset_stylesheet()
以及
self.setStyleSheet('QLineEdit{color:#F00};')
在validate部分。你知道吗相关问题 更多 >
编程相关推荐