Python 使用QT Designer实现拖拽进行可视化UI界面开发
目录
使用Python开发图形界面的软件其实并不多,而使用自带Tkiner库又无法满足一些界面开发,本文主要讲解了PyQt5以及使用QT Designer辅助进行模块化拖拽式图形化UI界面开发
提示:以下是本篇文章正文内容,下面案例可供参考
PyQt的开发者是英国的“Riverbank Computing”公司。它提供了GPL(简单的说,以GPL协议发布到网上的素材,你可以使用,也可以更改,但是经过你更改然后再次发布的素材必须也遵守GPL协议,主要要求是必须开源,而且不能删减原作者的声明信息等)与商业协议两种授权方式,因此它可以免费地用于自由软件的开发。翻译成人话就是免费使用就要开源代码,想要商用就需要付费
PyQt5:Qt是一个跨平台的 C++图形用户界面库。QT一度被诺基亚拥,后出售给芬兰的软件公司Digia Oyj。PyQt5是基于Digia公司Qt5的Python接口,由一组Python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix, Windows, and Mac OS。
Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整的安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。简单演示了PyQt5的调用方式及三个工具的使用方法,QT Designer实现拖拽进行可视化UI界面开发
下面登录框界面为使用python开发的简单登录框案例,本文一此案例为案例讲解
在windwos进入CMD使用命令安装(示例):
pip install PyQt5
pip install PyQt5-tools
pip install PyQt5Designer
pip install PyQtWebEngine
pip install PySimpleGUI
pip install PyQt5-sip
pip install PyQt5-stubs
安装完成后可以使用pip list 命令进行查看是否安装完成和安装的版本号,这些库都安装上后面都会用到
安装过程中可能会安装不成功可以换一下pip库的源
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
常用的pip源
1. 中科大源(https://pypi.mirrors.ustc.edu.cn/simple/)
中科大源是中国科学技术大学提供的镜像源,速度快且稳定。
2. 豆瓣源(https://pypi.douban.com/simple/)
豆瓣源是豆瓣提供的镜像源,速度也比较快。
3. 清华源(https://pypi.tuna.tsinghua.edu.cn/simple/)
清华源是清华大学提供的镜像源,速度较快。
4. 阿里云源(http://mirrors.aliyun.com/pypi/simple/)
阿里云源是阿里云提供的镜像源,速度也比较快。
根据需要选择合适的源来更换。
在pycharm里进行安装--->设置--->项目--->python解释器--->点击+号--->搜索需要安装的库
1、设置--->工具--->外部工具--->点击新增
名称:QtDesigner
组:External Tools
描述:Qt设置界面
程序:D:\python3\Lib\site-packages\QtDesigner\designer.exe
实参:无
工作路径:$FileDir$
配置好后点击确定即可在pycharm里启动工具
pyuic是将QT Designer绘制出来的UI界面文件转换为py文件
1、设置--->工具--->外部工具--->点击新增
名称:pyuic
组:External Tools
描述:UI界面一键生成代码
程序:D:\python3\Scripts\pyuic5.exe
实参:
$FileName$
-o
$FileNameWithoutExtension$.py
工作路径:$FileDir$
pyrcc是将QT Designer添加的图片文件生成的qrc文件转换为py文件
1、设置--->工具--->外部工具--->点击新增
名称:PyRcc
组:External Tools
描述:
程序:D:\python3\Scripts\pyrcc5.exe
实参:
$FileName$
-o
$FileNameWithoutExtension$_rc.py
工作路径:$FileDir$
移出菜单栏和底部状态栏
把所需要的的图片导入到资源管理器中
右键TextLabel点击改变样式--->添加资源添加背景图片--->apply--->点击ok就完成了背景添加
调整TextLabel的大小适配背景图片
把按钮输入框文本排版好在右边属性编辑器里编辑各种属性
把密码输入框属性echoMode设置为password这样输入的密码就不是明文了输入的时候就会变成***
修改按钮字体颜色以及按钮背景颜色
给背景图片设置一个圆角
border-radius:8px;
因为使用的是无边框,需要在界面内做一个关闭和缩小的按钮,不然软件运行后无法在软件界面进行缩小和关闭操作,
color: rgb(255, 255, 255);
按钮有背景颜色为了美观把按钮设置为透明无背景
给按钮设置信号/槽,是按钮可以最小化和关闭
关闭窗口
保存文件为login.ui在pycharm中使用Pyuic转化为py文件
新建一个python文件将逻辑代码复制到文件中
from login import Ui_MainWindow
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
import sys
class MyloginMainForm(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyloginMainForm, self).__init__(parent)
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint) # 设置无边框属性
if __name__ == '__main__':
# 自适应分辨率解决窗口错位代码
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
# 每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
app = QApplication(sys.argv)
myWin = MyloginMainForm()
# 显示在屏幕上
myWin.show()
sys.exit(app.exec_())
在文件里引入login文件这样每次修改UI文件就可以实现界面快速调整了
在UI界面文件里引入隐藏边框的代码让界面更加美观
# 隐藏外框代码
MainWindow.setWindowFlags(QtCore.Qt.FramelessWindowHint)
MainWindow.setAttribute(QtCore.Qt.WA_TranslucentBackground)
此时因为去掉了边框使得界面无法移动做一下小小的改动在类里面添加两个函数
from login import Ui_MainWindow
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
import sys
class MyloginMainForm(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyloginMainForm, self).__init__(parent)
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint) # 设置无边框属性
def mousePressEvent(self, event):
"""鼠标移动事件让窗口可移动"""
if event.buttons() == Qt.LeftButton:
self.oldPos = event.globalPos()
def mouseMoveEvent(self, event):
"""
鼠标移动事件
"""
if event.buttons() == Qt.LeftButton:
delta = event.globalPos() - self.oldPos
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = event.globalPos()
if __name__ == '__main__':
# 自适应分辨率解决窗口错位代码
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
# 每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
app = QApplication(sys.argv)
myWin = MyloginMainForm()
# 显示在屏幕上
myWin.show()
sys.exit(app.exec_())
效果展示
1月30
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。