您现在的位置是:首页 >其他 >pyqt 最详细的圆角窗口的设置步骤及讲解(全干货)网站首页其他

pyqt 最详细的圆角窗口的设置步骤及讲解(全干货)

潇宝丫 2024-10-10 00:01:02
简介pyqt 最详细的圆角窗口的设置步骤及讲解(全干货)

1、圆角MainWindow(不带状态栏statusbar的

        Qt Designer中创建一个新的MainWindow时,下面会自带centralwidget,menubar(菜单栏),statusbar(状态栏);centralwidget就是放界面主要内容的地方

        移除menubar(菜单栏),statusbar(状态栏);注意,状态栏里有一个大小调整手柄(size grip,在状态栏属性的最下面有一个sizeGripEnabled,就是用来控制这个部件的),可以通过拖动它来调整窗口的大小,所以状态栏移除后,窗口就不能通过这个调整大小

        并在centralwidget内创建一个QFrame

        设置Frame的样式(下面样式的verticalFrame替换成你的对应的QFrame的名字)

#verticalFrame.QFrame{
	background-color: #0B0E11;
	border:1px solid #161A1E;   /*边框的粗细,颜色*/
	border-radius:10px;    /*设置圆角半径 */
	padding:2px 4px;  /*QFrame边框与内部其它部件的距离*/
}

        在代码中加上这两句代码

# window可以改成你自定义的window名
window.setWindowFlags(QtCore.Qt.FramelessWindowHint)  
window.setAttribute(QtCore.Qt.WA_TranslucentBackground)

        或者在类里添加

class MyWindow(QtWidgets.QMainWindow):    
    def __init__(self):              
        super(MyWindow, self).__init__()
        uic.loadUi(ui_path, self) 
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # 表示窗口没有边框
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 表示窗口具有透明效果

        完成上述步骤就可以得到圆角主窗口

2、圆角MainWindow(带状态栏statusbar的

        如果需要状态栏自带的伸缩窗口的效果,不删除状态栏,就采用下述方法。

        步骤上和上面差不多,改动两个地方即可:

        设置Frame的样式改为:

#verticalFrame.QFrame{
	background-color: #0B0E11;
	border:1px solid #161A1E;   /*边框的粗细,颜色*/
	border-top-left-radius:10px;   /*设置边框左上的圆角半径 */
	border-top-right-radius:10px;   /*设置边框右上的圆角半径 */
	padding:2px 4px;  /*QFrame边框与内部其它部件的距离*/
}

        设置statusbar(状态栏)的样式(在属性里设置styleSheet)

background-color:  #0B0E11;
border-bottom-left-radius:10px;   /*设置边框右下的圆角半径 */
border-bottom-right-radius:10px;  /*设置边框右下的圆角半径 */
padding:2px 4px;

        完成上述步骤就可以得到圆角主窗口

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。