如何更改QMainWindow边框和标题栏的颜色?

2024-06-28 10:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的QMainWindow使用QSS指定了一个深灰色的背景色。 我还想更改边框的颜色和标题栏的颜色。

如何实现对QMainWindow边框和标题栏外观的控制?

我想知道如何改变他们的颜色,如何控制边框宽度和标题栏的高度。

enter image description here

from PyQt4.QtCore import *
from PyQt4.QtGui import *

appStyle="""
QMainWindow{
background-color: darkgray;
}
"""

class GUI(QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()  
        self.setStyleSheet(appStyle)

if __name__ == '__main__': 
    if not QApplication.instance(): app=QApplication([])
    w=GUI() 
    w.setStyleSheet(appStyle)
    w.show() 
    w.raise_()

    sys.exit(app.exec_())

Tags: fromimportselfappifinit颜色gui
1条回答
网友
1楼 · 发布于 2024-06-28 10:46:23

据我所知,您不能(在Windows上,可能有一些特殊的操作系统相关调用)修改Qt中顶级小部件(桌面上的真实窗口)的边框和标题,因为它们是从操作系统传递的。

但是,您可以设置小部件frameless,并为自己添加边框。

示例:

from PySide import QtGui, QtCore

app = QtGui.QApplication([])
app.setStyleSheet('QMainWindow{background-color: darkgray;border: 1px solid black;}')

w = QtGui.QMainWindow()
w.setWindowFlags(QtCore.Qt.FramelessWindowHint)
w.show()

app.exec_()

看起来像

enter image description here

不幸的是,通常的标题栏消失了,因此没有拖动,没有调整大小,没有关闭或最小化。这一切都必须由你自己来实现。请参见示例How can I handle events in the titlebar and change its color etc ?

相关问题 更多 >