【QtforPython官⽅教程】改变QtWidgets程序的样式
Qt Widgets 编写的程序默认使⽤系统原⽣样式。如果整个系统改变了样式设置,你的Qt程序也会跟着变换样式。
但是,有时候我们需要⾃⼰改变窗⼝或者各个组件的样式。⽐如,我们可以看下⾯这段例程:
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel
if __name__ =="__main__":
app = QApplication()
w = QLabel("This is a placeholder text")
w.setAlignment(Qt.AlignCenter)
w.show()
<())
当你执⾏这段程序时,你可以看到⼀个居中的 QLabel 组件,显⽰着 “This is a placeholder text”。
你可以使⽤ QSS(语法类似 CSS)来改变你的程序的样式。QSS的详细⽤法参考官⽹⽂档 。
QLabel 组件可以通过设置它的⼀些 CSS 属性来改变样式,⽐如修改 background-color 和 font-family ,你的代码是这样的:
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel
if __name__ =="__main__":
app = QApplication()
w = QLabel("This is a placeholder text")
w.setAlignment(Qt.AlignCenter)
w.setStyleSheet("""
background-color: #262626;
color: #FFFFFF;
font-family: Titillium;
font-size: 18px;
""")
w.show()
<())
现在,执⾏你的代码,你会发现 QLabel 的样式发⽣了改变:
备注
如果没有 Titillium 字体,可以使⽤其他字体来代替。想要知道你的电脑⾥装了哪些字体,可以使⽤ QFontDatabase 的 famillies()⽅法。
像上⾯这样分别将每个组件的样式进⾏设置⽐较繁琐,更简单的⽅法使使⽤ Qt 样式表 (Qt Style Sheet,
QSS),也就是使⽤⼀个或多个*.qss* ⽂件来定义你的程序中组件的样式。
更多例程可以在官⽹⽂档 ⾥查。
Qt 样式表
qss ⽂件类似于 CSS ⽂件,不过你需要指明是设置哪种 Widget 组件或者哪个哪个组件(指定组件的名字):
QLabel{
background-color: red;
}
QLabel#title{
font-size: 20px;
}
第⼀个样式定义了所有 QLabel 组件的 background-color 属性,⽽第⼆个样式只定义了名叫 title 的 QLabel 组件的 font-size 属性。
备注
你可以使⽤ setObjectName(str) 函数来给你的任何 Qt 组件设置名字。⽐如,对于组件 label = QLabel(“Test”),你可以⽤label.setObjectName(“title”) 将它的名字设置为 title。
如果你已经编写好了 qss ⽂件,你可以通过 QApplication.setStyleSheet(str) 函数来读⼊⽂件并使⽤它:
select语句完整版if __name__ =="__main__":
app = QApplication()
w = Widget()
w.show()
raceimg是什么意思>underdirwith open("style.qss","r")as f:
_style = f.read()
app.setStyleSheet(_style)
<())
使⽤ qss ⽂件可以让你的样式代码和程序代码分离开,⽽你只需要在程序代码中将其打开或关闭,更加灵活简洁。
观察下⾯这段例程,它包含了更多的组件:
class Widget(QWidget):
def__init__(self, parent=None):
super(Widget, self).__init__(parent)
menu_widget = QListWidget()
for i in range(10):
item = QListWidgetItem(f"Item {i}")
item.setTextAlignment(Qt.AlignCenter)
menu_widget.addItem(item)
text_widget = QLabel(_placeholder)
button = QPushButton("Something")
content_layout = QVBoxLayout()
content_layout.addWidget(text_widget)
content_layout.addWidget(button)
main_widget = QWidget()
main_widget.setLayout(content_layout)value函数怎么用python
layout = QHBoxLayout()
layout.addWidget(menu_widget,1)
layout.addWidget(main_widget,4)
音频转换成mp3self.setLayout(layout)
这个窗⼝包含了两列组件,左边是⼀个 QListWidget,右边是⼀个 QLabel 和⼀个 QPushButton。运⾏效果如下:
如果你在前⾯的 style.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;
}
python入门教程app这个样式表主要改变了各个组件的颜⾊、对齐⽅式等,加⼊了⼀些间隔。你也可以在 QListWidget 等组件上,定义不同状态下该组件的样式。这样,它们可以在被选中和没有被选中时显⽰出不同的样式。
当你应⽤了这些样式修改后,你会发现现在的窗⼝已经跟之前有了很⼤的不同。运⾏效果如下:
你可以最⼤程度地调整你的样式表,为你的应⽤程序创造⼀个⾮常美观的界⾯。
更多关于 Qt for Python ⽂章,可以查看 专栏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。