PyQt5 GUI编程界面与函数相连

这篇具有很好参考价值的文章主要介绍了PyQt5 GUI编程界面与函数相连。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyQt5 GUI编程界面与函数相连

在使用PyQt5的时候会出现一些需求无法用代码一步步实现,而用GUI画完窗口之后,又要根据pyUIC5自动生成的界面的参数进行编程,这样增加了理解变量所需的时间。我查到了一个解决办法,就是将界面设计与函数实现分开分别写,并用一个巧妙的方法将这俩在代码层面进行连接。

图形界面的实现

首先是界面的生成,PyQt desinger是属于Qt的可视化组件创造工具,为我们提供了托拉拽的设计界面,十分简单,只要掌握了布局的设计 ,基本上可以随心所欲进行设计,一些复杂的部件也可以大胆添加而不需要进行代码层面的设计,如果使用代码,需要先添加组件,再进行布局的设计,再将部件添加在一个布局之中,最后得到的部件大小或许还不满足我们的目的,不够美观或者布局不协调都是无法可视化设计带来的不良后果。所以就先利用部件的托拉拽,放入部件,再设计好布局使其能够随窗口的变化而变化。再反向生成窗口函数就可以。使用pyuic5 -o filename.py filename.ui进行ui文件转换为python文件的操作,在terminal输入即可。如果你有配套的小工具的话就再好不过了。
一般会得到这样的一个默认的窗口:


# -*- coding: utf-8 -*-
"""
@author:xiaoyangchicao2020
@time:2022-99-99
"""
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1057, 754)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout()
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
        self.graphicsView.setObjectName("graphicsView")
        self.verticalLayout_8.addWidget(self.graphicsView)
        self.horizontalLayout = QtWidgets.QHBoxLayout()

诸如这样的窗口代码,他们本身运行后是没有任何动静的,因为没有设置窗口循环显示,我们直接运行是没有窗口生成的,属于等会儿要拿来使用的配件。

函数的重写与自定义

PyQt5提供了丰富的函数接口,所以我们随心所欲自定义的函数可以直接绑定在那些部件上面。可以利用部件里面自带的方法进行创新,也可以自定义self值,继承封装好的类进行拓展。总的来说,自定义函数与函数的重写是对窗口部件的解构,是对部件属性的自定义,是一个新类的重构,所以有一定的难度。如果想实现一个功能,先去查查有没有封装好的函数或者方法可以调用,实在不行再自己从根源上进行重写。很大可能是在重复造轮子

函数如何与界面相连

直接开辟一个新的py文件作为方法函数编写区域,并将这个窗口作为包来导入:
from g import Ui_MainWindow
其中‘g’是我的窗口代码的名字,‘Ui_MainWindow’是自动生成的窗口类的名字,大家可以自己更改名字,这个要注意的是,我们在构造包含自定义函数的类的时候要与这个名字保持一致。

信号与槽

Qt提供了信号与槽机制进行控制。信号就是人机对话过程中人的动作,譬如点击某个按钮、鼠标的移动等事件,这样会向我们的窗口部件传入一个信号,而我们的部件有很多槽,信号传到某个部件的某个槽中就会激活槽,进行槽里面的操作,而槽里面的操作就是所谓的槽函数,也就是我们定义的函数,函数怎么写、写多少、和哪个部件绑定、和几个部件绑定都是可以自定义的,只需要将接口放进去就可以。
有了这些基础,我们再来看看如何将写好的函数这个内核与界面这个外壳进行拼接。

class show(QMainWindow):
    def __init__(self):
        super(show, self).__init__()
        self.ui= Ui_MainWindow()
        self.ui.setupUi(self)

首先是创建一个新类,继承刚刚生成那个界面的父类,并将自己作为新类。初始化绘图,得到self.ui就是可视化的绘图窗口,也就是是你刚刚生成的那个ui的画面。此时下面只要加上循环显示主函数就可以得到一个所有功能都是默认的窗口。
然后就是组装你的类,先把自定义的变量写进类里面,再把自定义函数放入部件的槽里面。比如
self.ui.graphicsView.mousePressEvent= self.mypress
指的就是在ui界面的那个QGraphicsView窗口的鼠标按下操作进行新的定义。将原本的鼠标按压事件所带来的结果改成我自定义的函数带来的结果。

        self.ui.graphicsView.grabKeyboard()
        self.ui.listView.clicked.connect(self.clicked)
        self.ui.actionOPen.triggered.connect(self.openimg)
        self.ui.actionSave.triggered.connect(self.saveimg)

这些也是进行函数的连接与重建,大家可以查一下分别代表着什么意思。这样的话,可视化的窗口就可以按照这样的方法一步步增添自己想要的功能,自己的功能如果不会写的话,也可以查一查如何通过部件本事实现自己的目的,一般都是有许多的方法在里面的。文章来源地址https://www.toymoban.com/news/detail-449745.html

到了这里,关于PyQt5 GUI编程界面与函数相连的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包