PyQt5 如何让界面和逻辑分离的方法

 更新时间:2020年03月24日 10:37:14   作者:yizhou2010  
这篇文章主要介绍了PyQt5 如何让界面和逻辑分离的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

我们已经知道利用QtDesigner来设计界面,并通过Pycharm外部工具PyUIC将其转化成py源文件。不过由于要响应事件操作,往往会将相应的槽函数写在ui的py文件中,这样,界面和逻辑开发就混合在一起了,每一次的ui更新都会伴随着转换后py文件的槽函数的添加修改,及其不方便,造成效率低下。本例就来介绍如何将二者剥离。

实例讲解

设计ui

我们通过Pycharm新建一个项目,并打开QtDesigner做一个简答的界面mainwindow.ui,在其上添加两个Button对应ID为World和China,一个label对应ID为Title,一个Line Edit对应的ID为lineEdit

ui转换成py

在Pycharm中项目文件中选择mainwindow.ui右键选择外部工具–PyUIC,生成py源文件ui_mainwindow.py

剥离ui和逻辑

在项目中新建文件mainwindow.py,创建类MainWindow类

from PyQt5 import QtCore, QtGui, QtWidgets
from ui_mainwindow import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
  def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)
    self.setupUi(self)

    self.Title.setText("hello Python")
    self.World.clicked.connect(self.onWorldClicked)
    self.China.clicked.connect(self.onChinaClicked)
    self.lineEdit.textChanged.connect(self.onlineEditTextChanged)

  def onWorldClicked(self, remark):
    print(remark)
    self.Title.setText("Hello World")

  def onChinaClicked(self):
    self.Title.setText("Hello China")

  def onlineEditTextChanged(self,p_str):
    self.Title.setText(p_str)

 在这里去绑定相应的signal和slot,实现业务逻辑,这样代码结构也清晰多了,以后如果再遇到ui更新,我们只需将更新的ui文件替换并生成行的ui_***.py,这样就实现了ui和逻辑的分离。

main函数中调用

在项目中新建主函数main.py,在其上实例化类MainWindow,并调用show方法显示

from PyQt5 import QtCore, QtGui, QtWidgets
from mainwindow import MainWindow
import sys

if __name__ == "__main__":
  app = QtWidgets.QApplication(sys.argv)
  mainWindow = MainWindow()
  mainWindow.show()
  sys.exit(app.exec_())

到此这篇关于PyQt5 如何让界面和逻辑分离的方法的文章就介绍到这了,更多相关PyQt5 界面和逻辑分离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对python中的*args与**kwgs的含义与作用详解

    对python中的*args与**kwgs的含义与作用详解

    今天小编就为大家分享一篇对python中的*args与**kwgs的含义与作用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python使用openpyxl实现Excel超链接批量化设置

    Python使用openpyxl实现Excel超链接批量化设置

    在Excel中,超链接是一种非常有用的功能,本文我们将介绍如何使用Python来处理Excel中的超链接,以及如何将超链接与对应的工作表链接起来,需要的可以参考一下
    2023-07-07
  • python pandas中对Series数据进行轴向连接的实例

    python pandas中对Series数据进行轴向连接的实例

    今天小编就为大家分享一篇python pandas中对Series数据进行轴向连接的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python进程池基本概念

    Python进程池基本概念

    这篇文章主要介绍了Python进程池基本概念,当创建的子进程数量不多时,可以直接利用多处理进程中的进程动态形成需要的进程,下文关于Python线程池的概念做详细介绍,需要的小伙伴可以参考一下
    2022-03-03
  • Python pymongo模块常用操作分析

    Python pymongo模块常用操作分析

    这篇文章主要介绍了Python pymongo模块常用操作,结合实例形式分析了pymongo模块的导入、连接MongoDB数据以及插入、更新、删除、查询等操作相关实现技巧,需要的朋友可以参考下
    2018-09-09
  • Scrapy的Pipeline之处理CPU密集型或阻塞型操作详解

    Scrapy的Pipeline之处理CPU密集型或阻塞型操作详解

    这篇文章主要介绍了Scrapy的Pipeline之处理CPU密集型或阻塞型操作详解,Twisted框架的reactor适合于处理短的、非阻塞的操作,Twisted提供了线程池来在其他的线程而不是主线程(Twisted的reactor线程)中执行慢的操作,需要的朋友可以参考下
    2023-10-10
  • 详解Python爬虫的基本写法

    详解Python爬虫的基本写法

    这篇文章主要介绍了详解Python爬虫的基本写法 的相关资料,需要的朋友可以参考下
    2016-01-01
  • Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘

    Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘

    最近工作需求,需要用opencv来先做一个demo,扫描照片进行边缘检测和最大边缘,就整理出来介绍一下,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 在Python中使用HTMLParser解析HTML的教程

    在Python中使用HTMLParser解析HTML的教程

    这篇文章主要介绍了在Python中使用HTMLParser解析HTML的教程,尤其是在用Python制作爬虫程序的时候经常可以用到,需要的朋友可以参考下
    2015-04-04
  • Python实例之wxpython中Frame使用方法

    Python实例之wxpython中Frame使用方法

    本文介绍下wxpython中Frame的用法,不错的python编程实例,有需要的朋友参考下
    2014-06-06

最新评论