有没有办法在 PyQt5 中动态更改背景颜色?
Is there no way to change background color DYNAMICALLY in PyQt5?
我正在 Python 中使用 PyQt5 编写应用程序。
我真的很想更改 QLable、QTextEdit 或任何我可以动态显示颜色的背景。
我已经看到了很多改变背景颜色的例子,但是所有这些似乎我都需要提前做一些"palette"事情。
我想要做的是根据用户的键盘输入更改背景颜色,它表示这样的颜色:#fffff 或 (255, 255 , 255)。
那么真的没有办法实现吗??
我应该使用哪种类型的对象并不重要。长方形就够了。
这是一个基本示例,说明如何使用 setStyleSheet
动态更改背景颜色。小部件的背景颜色更改为在输入行中输入的任何颜色。颜色可以输入为命名的 html 颜色(红色、蓝色、黄色等)或以 #rrggbb.
形式的十六进制代码
from PyQt5 import QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
layout = QtWidgets.QHBoxLayout(self)
self.line_edit = QtWidgets.QLineEdit()
self.line_edit.setPlaceholderText('Enter a color')
self.line_edit.setStyleSheet('QLineEdit {background-color:white}')
layout.addWidget(self.line_edit)
self.line_edit.editingFinished.connect(self.change_background)
def change_background(self):
col = self.line_edit.text()
self.setStyleSheet(f'QWidget {{background-color: {col};}}')
self.line_edit.clear()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
widget = Widget()
widget.resize(400,300)
widget.show()
app.exec()
我正在 Python 中使用 PyQt5 编写应用程序。 我真的很想更改 QLable、QTextEdit 或任何我可以动态显示颜色的背景。
我已经看到了很多改变背景颜色的例子,但是所有这些似乎我都需要提前做一些"palette"事情。
我想要做的是根据用户的键盘输入更改背景颜色,它表示这样的颜色:#fffff 或 (255, 255 , 255)。 那么真的没有办法实现吗??
我应该使用哪种类型的对象并不重要。长方形就够了。
这是一个基本示例,说明如何使用 setStyleSheet
动态更改背景颜色。小部件的背景颜色更改为在输入行中输入的任何颜色。颜色可以输入为命名的 html 颜色(红色、蓝色、黄色等)或以 #rrggbb.
from PyQt5 import QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
layout = QtWidgets.QHBoxLayout(self)
self.line_edit = QtWidgets.QLineEdit()
self.line_edit.setPlaceholderText('Enter a color')
self.line_edit.setStyleSheet('QLineEdit {background-color:white}')
layout.addWidget(self.line_edit)
self.line_edit.editingFinished.connect(self.change_background)
def change_background(self):
col = self.line_edit.text()
self.setStyleSheet(f'QWidget {{background-color: {col};}}')
self.line_edit.clear()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
widget = Widget()
widget.resize(400,300)
widget.show()
app.exec()