|
Python使用QTDesigner实现拖拽进行可视化UI界面开发目录前言 使用Python开发图形界面的软件其实并不多,而使用自带Tkiner库又无法满足一些界面开发,本文主要讲解了PyQt5以及使用QTDesigner辅助进行模块化拖拽式图形化UI界面开发提示:以下是本篇文章正文内容,下面案例可供参考一、PyQt5是什么?  yQt的开发者是英国的“RiverbankComputing”公司。它提供了GPL(简单的说,以GPL协议发布到网上的素材,你可以使用,也可以更改,但是经过你更改然后再次发布的素材必须也遵守GPL协议,主要要求是必须开源,而且不能删减原作者的声明信息等)与商业协议两种授权方式,因此它可以免费地用于自由软件的开发。翻译成人话就是免费使用就要开源代码,想要商用就需要付费  yQt5:Qt是一个跨平台的C++图形用户界面库。QT一度被诺基亚拥,后出售给芬兰的软件公司DigiaOyj。PyQt5是基于Digia公司Qt5的Python接口,由一组Python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix,Windows,andMacOS。 Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整的安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和QtDesigner、PyUIC、PyRcc三个工具的设置。简单演示了PyQt5的调用方式及三个工具的使用方法,QTDesigner实现拖拽进行可视化UI界面开发 下面登录框界面为使用python开发的简单登录框案例,本文以此案例为案例讲解二、PyQt5界面开发需要安装的工具1.工具安装安装方法一在windwos进入CMD使用命令安装(示例):pipinstallPyQt5pipinstallPyQt5-toolspipinstallPyQt5DesignerpipinstallPyQtWebEnginepipinstallPySimpleGUIpipinstallPyQt5-sippipinstallPyQt5-stubs 安装完成后可以使用piplist命令进行查看是否安装完成和安装的版本号,这些库都安装上后面都会用到更换pip库源安装过程中可能会安装不成功可以换一下pip库的源pipinstallpip-Upipconfigsetglobal.index-urlhttps://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解释器--->点击+号--->搜索需要安装的库三、工具配置一、QTDesigner1、设置--->工具--->外部工具--->点击新增名称:QtDesigner组:ExternalTools描述:Qt设置界面程序:D:\python3\Lib\site-packages\QtDesigner\designer.exe实参:无工作路径:$FileDir$配置好后点击确定即可在pycharm里启动工具二、Pyuicpyuic是将QTDesigner绘制出来的UI界面文件转换为py文件1、设置--->工具--->外部工具--->点击新增名称:pyuic组:ExternalTools描述:UI界面一键生成代码程序:D:\python3\Scripts\pyuic5.exe实参:$FileName$-o$FileNameWithoutExtension$.py工作路径:$FileDir$三、PyRccpyrcc是将QTDesigner添加的图片文件生成的qrc文件转换为py文件1、设置--->工具--->外部工具--->点击新增名称:PyRcc组:ExternalTools描述:程序:D:\python3\Scripts\pyrcc5.exe实参:$FileName$-o$FileNameWithoutExtension$_rc.py工作路径:$FileDir$四、QTDesigner的使用一、启动QTDesigner工具二、创建一个项目移出菜单栏和底部状态栏把所需要的的图片导入到资源管理器中右键TextLabel点击改变样式--->添加资源添加背景图片--->apply--->点击ok就完成了背景添加调整TextLabel的大小适配背景图片把按钮输入框文本排版好在右边属性编辑器里编辑各种属性把密码输入框属性echoMode设置为password这样输入的密码就不是明文了输入的时候就会变成***修改按钮字体颜色以及按钮背景颜色给背景图片设置一个圆角border-radius:8px;因为使用的是无边框,需要在界面内做一个关闭和缩小的按钮,不然软件运行后无法在软件界面进行缩小和关闭操作,color:rgb(255,255,255);按钮有背景颜色为了美观把按钮设置为透明无背景给按钮设置信号/槽,是按钮可以最小化和关闭关闭窗口三、将Desiger保存的ui文件转化为py文件保存文件为login.ui在pycharm中使用Pyuic转化为py文件 新建一个python文件将逻辑代码复制到文件中fromloginimportUi_MainWindowfromPyQt5.QtWidgetsimportQApplication,QMainWindowfromPyQt5.QtCoreimportQtimportsysclassMyloginMainForm(QMainWindow,Ui_MainWindow):def__init__(self,parent=None):super(MyloginMainForm,self).__init__(parent)self.setupUi(self)self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框属性if__name__=='__main__':#自适应分辨率解决窗口错位代码fromPyQt5importQtCoreQtCore.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) 此时因为去掉了边框使得界面无法移动做一下小小的改动在类里面添加两个函数fromloginimportUi_MainWindowfromPyQt5.QtWidgetsimportQApplication,QMainWindowfromPyQt5.QtCoreimportQtimportsysclassMyloginMainForm(QMainWindow,Ui_MainWindow):def__init__(self,parent=None):super(MyloginMainForm,self).__init__(parent)self.setupUi(self)self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框属性defmousePressEvent(self,event):"""鼠标移动事件让窗口可移动"""ifevent.buttons()==Qt.LeftButton:self.oldPos=event.globalPos()defmouseMoveEvent(self,event):"""鼠标移动事件"""ifevent.buttons()==Qt.LeftButton:delta=event.globalPos()-self.oldPosself.move(self.x()+delta.x(),self.y()+delta.y())self.oldPos=event.globalPos()if__name__=='__main__':#自适应分辨率解决窗口错位代码fromPyQt5importQtCoreQtCore.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提供了大量能使我们快速便捷地处理数据的函数和方法。
|
|