PyQt5 QColorDialog是一个用于管理颜色的对话框,可以在图形用户界面(GUI)中显示对话框以允许用户更改颜色。下面是PyQt5 QColorDialog设置背景色的完整使用攻略。
导入模块
from PyQt5.QtWidgets import QAction, QColorDialog, QMenu, QMainWindow, QApplication
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
import sys
定义主窗口
在主窗口中,我们可以添加菜单栏和工具栏,并将菜单和工具栏与QColorDialog相链接。在这里,我们增加一个 Action,“Set Color”,用于打开 QColorDialog。
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置主窗口标题
self.setWindowTitle("PyQt5 QColorDialog 示例")
# 创建“文件“菜单的 Action
file_action = QAction("Exit", self)
file_action.setShortcut("Ctrl+Q")
file_action.setStatusTip("退出应用程序")
file_action.triggered.connect(self.close)
# 创建“工具栏”中的 Action
set_color_action = QAction("Set Color", self)
set_color_action.triggered.connect(self.set_color)
# 将 Action 添加到菜单
file_menu = self.menuBar().addMenu("文件")
file_menu.addAction(file_action)
# 将 Action 添加到工具栏
tool_bar = self.addToolBar("工具栏")
tool_bar.addAction(set_color_action)
def set_color(self):
color = QColorDialog.getColor()
if color.isValid():
self.setStyleSheet("background-color: " + color.name())
在set_color
函数中,我们使用QColorDialog.getColor()方法弹出QColorDialog对话框。该对话框会返回用户选择的颜色。我们用isValid()方法来确定是否选择了有效的颜色,然后将该颜色设置为主窗口的背景色。
完整代码示例
from PyQt5.QtWidgets import QAction, QColorDialog, QMenu, QMainWindow, QApplication
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置主窗口标题
self.setWindowTitle("PyQt5 QColorDialog 示例")
# 创建“文件“菜单的 Action
file_action = QAction("Exit", self)
file_action.setShortcut("Ctrl+Q")
file_action.setStatusTip("退出应用程序")
file_action.triggered.connect(self.close)
# 创建“工具栏”中的 Action
set_color_action = QAction("Set Color", self)
set_color_action.triggered.connect(self.set_color)
# 将 Action 添加到菜单
file_menu = self.menuBar().addMenu("文件")
file_menu.addAction(file_action)
# 将 Action 添加到工具栏
tool_bar = self.addToolBar("工具栏")
tool_bar.addAction(set_color_action)
def set_color(self):
color = QColorDialog.getColor()
if color.isValid():
self.setStyleSheet("background-color: " + color.name())
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
示例1
在这个示例中,我们要设计一个简单的疯狂老师程序,当点击工具栏的“Set Color”按钮时,弹出QColorDialog对话框,让用户选择背景颜色,然后将颜色设置为窗口的背景。
from PyQt5.QtWidgets import QAction, QColorDialog, QMenu, QMainWindow, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置主窗口标题
self.setWindowTitle("疯狂老师")
# 创建“文件“菜单的 Action
file_action = QAction("Exit", self)
file_action.setShortcut("Ctrl+Q")
file_action.setStatusTip("退出应用程序")
file_action.triggered.connect(self.close)
# 创建“工具栏”中的 Action
set_color_action = QAction("Set Color", self)
set_color_action.triggered.connect(self.set_color)
# 将 Action 添加到菜单
file_menu = self.menuBar().addMenu("文件")
file_menu.addAction(file_action)
# 将 Action 添加到工具栏
tool_bar = self.addToolBar("工具栏")
tool_bar.addAction(set_color_action)
def set_color(self):
color = QColorDialog.getColor()
if color.isValid():
self.setStyleSheet("background-color: " + color.name())
def paintEvent(self, event):
painter = QPainter(self)
brush = QBrush(Qt.red)
painter.setBrush(brush)
painter.drawRect(100, 100, 200, 200)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
示例2
在这个示例中,我们要设计一个简单的颜色选择器程序,当用户单击“颜色选择器”按钮时,打开QColorDialog对话框,然后将选择的颜色绘制在一个方块中。
from PyQt5.QtWidgets import QAction, QColorDialog, QMenu, QMainWindow, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置主窗口标题
self.setWindowTitle("颜色选择器")
# 创建“文件“菜单的 Action
file_action = QAction("Exit", self)
file_action.setShortcut("Ctrl+Q")
file_action.setStatusTip("退出应用程序")
file_action.triggered.connect(self.close)
# 创建“工具栏”中的 Action
set_color_action = QAction("颜色选择器", self)
set_color_action.triggered.connect(self.set_color)
# 将 Action 添加到菜单
file_menu = self.menuBar().addMenu("文件")
file_menu.addAction(file_action)
# 将 Action 添加到工具栏
tool_bar = self.addToolBar("工具栏")
tool_bar.addAction(set_color_action)
# 初始化颜色
self.color = Qt.white
def set_color(self):
color = QColorDialog.getColor()
if color.isValid():
self.color = color
self.update()
def paintEvent(self, event):
painter = QPainter(self)
brush = QBrush(self.color)
painter.setBrush(brush)
painter.drawRect(100, 100, 50, 50)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
这两个示例中都使用了QPainter类,在窗口的paintEvent()事件中绘制一个矩形或正方形,并将填充颜色设置为用户选择的颜色,以完成演示。