Material Design CheckBox 单独更改颜色

本文介绍了一种通过自定义主题的方式实现Android应用中CheckBox控件颜色为白色的样式设置方法。通过定义名为CheckBoxWhite的样式,并指定CheckBox的正常颜色、选中颜色及文字颜色等属性均为白色,可以统一调整CheckBox的颜色风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 更改chexkbox 颜色  使用 android:theme="@style/CheckBoxWhite". -->
<style name="CheckBoxWhite" parent="Widget.AppCompat.CompoundButton.CheckBox">
    <!-- 正常颜色 -->
    <item name="colorControlNormal">@color/white</item>
    <!-- 选中时颜色 -->
    <item name="colorAccent">@color/white</item>
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="color">@color/white</item>
</style>
import sys from PyQt6.QtWidgets import ( QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QCheckBox, QRadioButton, QSlider, QProgressBar, QLineEdit, QComboBox, QTabWidget, QGroupBox, QListWidget, QListWidgetItem, QTableWidget, QTableWidgetItem, QFormLayout ) from PyQt6.QtCore import Qt, QSize from PyQt6.QtGui import QIcon from qt_material import apply_stylesheet, list_themes class MaterialDesignDemo(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("PyQt6 Material Design 组件展示") self.setGeometry(300, 300, 800, 600) # 主窗口部件 central_widget = QWidget() self.setCentralWidget(central_widget) # 主布局 main_layout = QVBoxLayout(central_widget) # 主题选择部分 theme_layout = QHBoxLayout() self.theme_label = QLabel("选择主题:") theme_layout.addWidget(self.theme_label) self.theme_combo = QComboBox() self.theme_combo.addItems(list_themes()) # 添加所有可用主题 self.theme_combo.currentTextChanged.connect(self.change_theme) theme_layout.addWidget(self.theme_combo) # 添加暗黑模式切换 self.dark_mode_check = QCheckBox("暗黑模式") self.dark_mode_check.stateChanged.connect(self.toggle_dark_mode) theme_layout.addWidget(self.dark_mode_check) main_layout.addLayout(theme_layout) # 选项卡组件 self.tab_widget = QTabWidget() main_layout.addWidget(self.tab_widget) # 创建各个选项卡 self.create_basic_components_tab() self.create_form_components_tab() self.create_list_table_tab() self.create_advanced_tab() # 应用默认主题 self.change_theme("dark_amber") # 状态栏 self.statusBar().showMessage("当前主题: dark_amber | 暗黑模式: 开启") def create_basic_components_tab(self): """创建基础组件选项卡""" tab = QWidget() layout = QVBoxLayout(tab) # 按钮组 btn_group = QGroupBox("按钮") btn_layout = QHBoxLayout(btn_group) btn1 = QPushButton("主要按钮") btn1.setIcon(QIcon(":material/check")) btn_layout.addWidget(btn1) btn2 = QPushButton("次要按钮") btn2.setIcon(QIcon(":material/cancel")) btn_layout.addWidget(btn2) btn3 = QPushButton("禁用按钮") btn3.setEnabled(False) btn_layout.addWidget(btn3) layout.addWidget(btn_group) # 选择组件组 select_group = QGroupBox("选择组件") select_layout = QVBoxLayout(select_group) # 复选框 check_layout = QHBoxLayout() check_layout.addWidget(QLabel("复选框:")) for i in range(3): checkbox = QCheckBox(f"选项 {i + 1}") check_layout.addWidget(checkbox) select_layout.addLayout(check_layout) # 单选框 radio_layout = QHBoxLayout() radio_layout.addWidget(QLabel("单选框:")) for i in range(3): radio = QRadioButton(f"选项 {i + 1}") radio_layout.addWidget(radio) select_layout.addLayout(radio_layout) # 开关 switch_layout = QHBoxLayout() switch_layout.addWidget(QLabel("开关:")) for i in range(3): switch = QCheckBox() switch.setStyleSheet("QCheckBox::indicator { width: 40px; height: 20px; }") switch_layout.addWidget(switch) switch_layout.addWidget(QLabel(f"开关 {i + 1}")) select_layout.addLayout(switch_layout) layout.addWidget(select_group) # 进度组件组 progress_group = QGroupBox("进度组件") progress_layout = QVBoxLayout(progress_group) # 滑块 slider_layout = QHBoxLayout() slider_layout.addWidget(QLabel("滑块:")) slider = QSlider(Qt.Orientation.Horizontal) slider.setRange(0, 100) slider.setValue(50) slider_layout.addWidget(slider) progress_layout.addLayout(slider_layout) # 进度条 progressbar_layout = QHBoxLayout() progressbar_layout.addWidget(QLabel("进度条:")) progressbar = QProgressBar() progressbar.setRange(0, 100) progressbar.setValue(75) progressbar_layout.addWidget(progressbar) progress_layout.addLayout(progressbar_layout) layout.addWidget(progress_group) self.tab_widget.addTab(tab, "基础组件") def create_form_components_tab(self): """创建表单组件选项卡""" tab = QWidget() layout = QVBoxLayout(tab) # 输入框组 input_group = QGroupBox("输入框") input_layout = QFormLayout(input_group) # 文本输入 input_layout.addRow("文本输入:", QLineEdit("示例文本")) # 密码输入 password = QLineEdit() password.setEchoMode(QLineEdit.EchoMode.Password) password.setText("password123") input_layout.addRow("密码输入:", password) # 多行文本 text_edit = QLineEdit("多行文本示例...") text_edit.setMinimumHeight(80) input_layout.addRow("多行文本:", text_edit) layout.addWidget(input_group) # 选择器组 selector_group = QGroupBox("选择器") selector_layout = QVBoxLayout(selector_group) # 下拉选择框 combo_layout = QHBoxLayout() combo_layout.addWidget(QLabel("下拉选择:")) combo = QComboBox() combo.addItems(["选项 1", "选项 2", "选项 3"]) combo_layout.addWidget(combo) selector_layout.addLayout(combo_layout) # 日期选择器 date_layout = QHBoxLayout() date_layout.addWidget(QLabel("日期选择:")) date_edit = QLineEdit("2023-06-15") date_edit.setReadOnly(True) date_layout.addWidget(date_edit) selector_layout.addLayout(date_layout) # 时间选择器 time_layout = QHBoxLayout() time_layout.addWidget(QLabel("时间选择:")) time_edit = QLineEdit("14:30") time_edit.setReadOnly(True) time_layout.addWidget(time_edit) selector_layout.addLayout(time_layout) layout.addWidget(selector_group) self.tab_widget.addTab(tab, "表单组件") def create_list_table_tab(self): """创建列表和表格选项卡""" tab = QWidget() layout = QVBoxLayout(tab) # 列表组件 list_group = QGroupBox("列表组件") list_layout = QHBoxLayout(list_group) # 简单列表 simple_list = QListWidget() for i in range(1, 6): item = QListWidgetItem(f"列表项 {i}") simple_list.addItem(item) list_layout.addWidget(simple_list) # 带图标的列表 icon_list = QListWidget() icons = [":material/email", ":material/favorite", ":material/star", ":material/settings"] for i, icon in enumerate(icons): item = QListWidgetItem(QIcon(icon), f"带图标项 {i + 1}") icon_list.addItem(item) list_layout.addWidget(icon_list) layout.addWidget(list_group) # 表格组件 table_group = QGroupBox("表格组件") table_layout = QVBoxLayout(table_group) table = QTableWidget(5, 4) table.setHorizontalHeaderLabels(["ID", "名称", "状态", "操作"]) for row in range(5): for col in range(4): if col == 0: table.setItem(row, col, QTableWidgetItem(f"{row + 1}")) elif col == 1: table.setItem(row, col, QTableWidgetItem(f"项目 {row + 1}")) elif col == 2: status = QTableWidgetItem("激活" if row % 2 == 0 else "禁用") status.setForeground(Qt.GlobalColor.green if row % 2 == 0 else Qt.GlobalColor.red) table.setItem(row, col, status) else: btn = QPushButton("操作") btn.setFixedSize(80, 30) table.setCellWidget(row, col, btn) table.resizeColumnsToContents() table_layout.addWidget(table) layout.addWidget(table_group) self.tab_widget.addTab(tab, "列表与表格") def create_advanced_tab(self): """创建高级组件选项卡""" tab = QWidget() layout = QVBoxLayout(tab) # 卡片组件 card_group = QGroupBox("卡片组件") card_layout = QHBoxLayout(card_group) # 卡片 1 card1 = QGroupBox() card1.setStyleSheet("border: 1px solid #ddd; border-radius: 8px; padding: 15px;") card1_layout = QVBoxLayout(card1) card1_layout.addWidget(QLabel("卡片标题")) card1_layout.addWidget(QLabel("卡片内容描述文本...")) card1_layout.addWidget(QPushButton("操作按钮")) card_layout.addWidget(card1) # 卡片 2 card2 = QGroupBox() card2.setStyleSheet("border: 1px solid #ddd; border-radius: 8px; padding: 15px;") card2_layout = QVBoxLayout(card2) card2_layout.addWidget(QLabel("带图标的卡片")) card2_layout.addWidget(QPushButton(QIcon(":material/favorite"), "喜欢")) card_layout.addWidget(card2) layout.addWidget(card_group) # 消息组件 message_group = QGroupBox("消息组件") message_layout = QVBoxLayout(message_group) # 不同类型的消息 message_types = [ ("信息消息", ":material/info", "#2196F3"), ("成功消息", ":material/check_circle", "#4CAF50"), ("警告消息", ":material/warning", "#FFC107"), ("错误消息", ":material/error", "#F44336") ] for text, icon, color in message_types: msg_layout = QHBoxLayout() icon_label = QLabel() icon_label.setPixmap(QIcon(icon).pixmap(24, 24)) msg_layout.addWidget(icon_label) text_label = QLabel(text) text_label.setStyleSheet(f"color: {color}; font-weight: bold;") msg_layout.addWidget(text_label) message_layout.addLayout(msg_layout) layout.addWidget(message_group) self.tab_widget.addTab(tab, "高级组件") def change_theme(self, theme_name): """切换主题""" dark_mode = self.dark_mode_check.isChecked() apply_stylesheet(app, theme=theme_name, invert_secondary=dark_mode) # 更新状态栏 self.statusBar().showMessage(f"当前主题: {theme_name} | 暗黑模式: {'开启' if dark_mode else '关闭'}") def toggle_dark_mode(self): """切换暗黑模式""" current_theme = self.theme_combo.currentText() self.change_theme(current_theme) if __name__ == "__main__": app = QApplication(sys.argv) # 列出所有可用主题 print("可用主题:") for theme in list_themes(): print(f" - {theme}") window = MaterialDesignDemo() window.show() sys.exit(app.exec()) 日期选择没有弹出对应的日期
最新发布
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值