python@pyside样式化
ref
Widget类创建
-
创建一个简单界面(菜单+主要内容)它们是水平布局
-
主要内容包括一段文本和一个按钮,它们是垂直布局
-
import sys from PySide6.QtWidgets import QWidget, QListWidget, QListWidgetItem, QLabel, QPushButton, QVBoxLayout, QHBoxLayout,QApplication from PySide6.QtCore import Qt class Widget(QWidget): def __init__(self, parent=None): super(Widget, self).__init__(parent) # Widget分为两部分:菜单menu_widdget和主要内容main_widget # 主要内容main_widget包括一段文本和一个按钮,它们以垂直的方式布局 _placeholder = "Placeholder Text" menu_widget = QListWidget() for i in range(10): # 设置item内容 item = QListWidgetItem(f"Item {i}") #设置item样式 item.setTextAlignment(Qt.AlignCenter) #将item添加到menu中 menu_widget.addItem(item) # 第二部分为QLable text_widget = QLabel(_placeholder) # 再设置一个pushButton button = QPushButton("Something") # 设置第二部分的布局为垂直布局 #新建垂直骨架 content_layout = QVBoxLayout() # 依次将Lable和button填充进去 content_layout.addWidget(text_widget) content_layout.addWidget(button) main_widget = QWidget() #将布局加载到main_widget中 main_widget.setLayout(content_layout) # 创建水平布局 layout = QHBoxLayout() # 将菜单和主内容添加到水平布局,并且设置比例为1:4 layout.addWidget(menu_widget, 1) layout.addWidget(main_widget, 4) # 将最终的总布局绑定到Widget上 self.setLayout(layout)
样式化文件qss
-
QListWidget { color: #FFFFFF; background-color: #33373B; } QListWidget::item { height: 50px; } QListWidget::item:selected { background-color: #2ABf9E; } QLabel { background-color: #FFFFFF; qproperty-alignment: AlignCenter; } QPushButton { background-color: #2ABf9E; padding: 20px; font-size: 18px; } -
将上述内容保存到一个名为
style.qss
的文件中
引用样式并启动应用
-
if __name__ == "__main__": #创建一个app app = QApplication() #实例化上方自定义的Widget类 w = Widget() #将Widget实例w显示出来 w.show() # 引用编写的样式style.qss with open("style.qss", "r") as f: _style = f.read() # 将读取到的样式通过setStyleSheet应用到app app.setStyleSheet(_style) #启动app sys.exit(app.exec())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了