这回要实现一个漂亮的基础界面,要具有如下特色:
无边框,圆角,漂亮的背景,可拖拽移动,具有最小化,关闭按钮,界面与代码分离,支持qss
先展示一下最后的效果:
那就开始工作吧:
1.通过Qt Designer实现界面设计
将资源文件保存为image.qrc
图片文件有bg.jpg,images/min.png,images/quit.png 这些资源文件都可以在我的资源文件(
Qt小实练--实现圆角、阴影、无边框窗体,可拖拽缩放大小)下载到,如果需要学习Qt界面开发的可参考我的博文:
Qt小实练--实现圆角、阴影、无边框窗体,可拖拽缩放大小
2.在Pycharm新建项目test-baseUi,将上述文件复制到项目中
目录结构如图:
3.通过工具PyUIC,PyRcc分别对dialog.ui,image.qrc进行转化,生成dialog.py和image_rc.py文件(关于如何在pycharm上安装这几个工具的文章网上有很多,在此就不说了)
4.现在界面有了,要实现界面与代码分离,建立main.py文件打开ui界面
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a Main using Ui file'
__author__ = 'TianJiang Gui'
import sys
from PyQt5.QtWidgets import QApplication,QDialog,QFileDialog
import dialog
from PyQt5.QtCore import *
class MainDo(QDialog, dialog.Ui_Dialog):
def __init__(self):
QDialog.__init__(self)
dialog.Ui_Dialog.__init__(self)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
md = MainDo()
md.show()
sys.exit(app.exec_())
5.实现圆角,无边框样式,最小化,关闭窗口功能
# 无边框
self.setWindowFlags(Qt.FramelessWindowHint)
#---gtj 设置窗口透明
self.setAttribute(Qt.WA_TranslucentBackground)
#---gtj实现最小化,关闭功能
self.pushButton_min.clicked.connect(self.showMinimized)
self.pushButton_quit.clicked.connect(self.close)
6.实现鼠标拖拽功能
#---gtj 实现鼠标拖拽功能
def mousePressEvent(self, event):
self.pressX = event.x() #记录鼠标按下的时候的坐标
self.pressY = event.y()
def mouseMoveEvent(self, event):
x = event.x()
y = event.y() #获取移动后的坐标
moveX = x-self.pressX
moveY = y-self.pressY #计算移动了多少
positionX = self.frameGeometry().x() + moveX
positionY = self.frameGeometry().y() + moveY #计算移动后主窗口在桌面的位置
self.move(positionX, positionY) #移动主窗口
7.实现qss文件引用
1)首先在初始化时增加self.qss()
2)增加一个调用qss文件的工具类UsingQSS
3)主应用程序中增加qss()函数
#---gtj qss文件引用
def qss(self):
self.qssfile = "./qss/dialog.qss"
self.style = UsingQSS.loadqss(self.qssfile)
self.setStyleSheet(self.style)
至此全部功能实现完毕!
最终项目工程文件结构如下:
如果你想直接获得现成的工程项目,那就付5颗咖啡豆打赏一下吧:)
Python基础实用漂亮界面(无边框,圆角,可拖拽)