美文网首页Python GUI
PyQt5图形界面编程

PyQt5图形界面编程

作者: 修行的修行 | 来源:发表于2021-05-21 17:39 被阅读0次

    Qt Designer的介绍

    在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成.py文件。

    Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages

    \QtDesigner\”下。

    若要启动Qt Designer可以直接到上述目录下,双击designer.exe打开Qt Designer;或将上述路径加入环境变量,在命令行输入designer打开;或在PyCharm中将其配置为外部工具打开。

    下面以PyCharm为例,讲述PyCharm中Qt Designer的配置方法。

    PyCharm中PyQt5工具配置

    打开PyCharm,选择Settings -> Tools -> External Tools,点击左上角的绿色加号。

    image

    Name填入QtDesigner(方便后续使用,名称无所谓)。Program选择我们安装的PyQt5-tools下面的designer.exe。Working directory则选择我们的工作目录。然后点击OK,则添加了QtDesigner作为PyCharm的外置工具。

    然后添加PyUIC(UI转换工具),PyUIC的Program为Python.exe,在Python的安装目录下面的Scripts目录下,Working directory同理设为我们的工作目录,Arguments则填入如下代码:

    -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
    
    

    最后添加pyrcc用于PyQt5的资源文件转码。具体配置与上述内容相同,Arguments填入:

    $FileName$ -o $FileNameWithoutExtension$_rc.py
    
    

    退出之前,点击Apply保存配置。配置完成之后,PyCharm中会加入3个工具。

    image

    点击QtDesigner则打开QtDesigner的界面。

    Qt Designer界面简介

    刚打开Qt Designer,则弹出如下图所示的窗口。

    模板窗口

    创建新的Form给出了5个模板,其中Widget与Main Window最为常用。这里我们选择创建一个Main Window。


    QtDesigner界面

    上面界面的最左侧菜单为Widget Box,Widget Box中包含PyQt5中的所有Widget组件,我们可以从左侧的Widget Box中拖拽出诸如Button、View和Input等组件到中间的窗口中。

    点击Form -> Preview(快捷键为Ctrl+R)则可以预览我们设计好的界面,也可以用Preview In来选择在相应的主题风格下预览。

    可以通过拖拽将左边的组件进入主窗口(Main Window)。

    主窗口

    此时在右上角的Object Inspector(对象查看器)中可以看到主窗口中的已放置的对象(label与pushButton)以及其相应地Qt类。在此处可以对多组件进行统一的布局。

    对象查看器

    以Label为例,此时我们点击Main Window中的label或是在Object Inspector中选取label后,查看右侧的一块区域——Property Editor(属性编辑器)。在此处可以进行组件属性的修改。

    属性编辑器

    其主要包含属性有如下:
    | 名称 | 含义 |
    | objectName | 控件对象名称 |
    | geometry | 相应宽和高与坐标 |
    | sizePolicy | 控件大小的策略 |
    | minimumSize | 最小的宽和高 |
    | maximumSize | 最大的宽和高 |
    | font | 字体 |
    | cursor | 光标 |</byte-sheet-html-origin>

    PS:将minimumSize和maximumSize设为一样的数值之后,则窗口的大小固定。

    最右下角的部分则为Resource Browser(资源浏览器),资源浏览器中可以添加相应地如图片素材,作为Label或Button等控件的背景图片等。

    资源浏览器

    经过一番拖拉拽,设计出了需要的2个窗口

    image

    将.ui文件转换为.py文件

    将.ui文件转换到.py文件很简单,用前面设置的pyuic5这个工具。

    直接在PyCharm中,找到.ui文件,右键 打开菜单找到External Tools->PyUIC。点击之后,我们在相应工程目录下会产生一个.py文件。(注意,.ui文件必须存放在我们的External Tools中设置的相应项目目录下)

    PyUIC

    通过Qt Designer设计出ui,可以转换成出可用的python代码。

    组件之间的后台交互逻辑代码,再在另外的文件中开发。很好的分离了UI代码和交互逻辑代码,方便未来进行UI的优化。

    交互逻辑代码编写方法

    父窗口和子窗口间的交互

    import sys
    from PyQt5.QtWidgets import QMainWindow, QApplication
    # connection.ui转换成的connection.py
    from connection import Ui_Connection
    # window.ui转换成的window.py
    from window import Ui_MainWindow
    
    class ParentWindow(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(ParentWindow, self).__init__()
            self.setupUi(self)  # 使用Ui_MainWindow类的setupUi方法
    
    class ChildWindow(QMainWindow, Ui_Connection):
        def __init__(self,parent_instance):
            super(ChildWindow, self).__init__()
            self.setupUi(self)  # 使用Ui_Connection类的setupUi方法
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        myWin = ParentWindow()
        myWin.child_window = ChildWindow(myWin)  # 父窗口关联子窗口
        myWin.add_connection_button.clicked.connect(myWin.child_window.show)
        myWin.show()
        sys.exit(app.exec_())
    
    

    个人开发

    pyqt5 redis_desktop:https://github.com/walker-coder/redis_desktop

    相关文章

      网友评论

        本文标题:PyQt5图形界面编程

        本文链接:https://www.haomeiwen.com/subject/muowjltx.html