pycharm开发一个简单界面和通用mvc模板(操作方法图解)


Posted in Python onMay 27, 2020

文章首先使用pycharm的 PyQt5 Designer 做一个简单的界面,然后引入所谓的“mvc框架”。

一、设计登录界面

下面开始第一个话题,使用pycharm的 PyQt5 Designer 做一个简单的界面。

上一篇最后,在pycharm中配置了PyQt5 Designer 和 uic,接下来,使用这些工具,开发一个界面。

1、首先打开 Designer1) 在左侧任意位置(下图桔色框内)点击右键,弹出菜单,在External Tools 选中 PyQt5 Designer

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

2) 打开 Designer

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

3) 选择Main Windows ,点击创建

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

4)新窗口

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

5)修改窗口标题

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

6)保存到项目的main目录下,名称为 Main.ui

pycharm开发一个简单界面和通用mvc模板(操作方法图解)
pycharm开发一个简单界面和通用mvc模板(操作方法图解)

7) 转换图形文件为源代码

右键选中 Main.ui ,弹出菜单,选中 External Tools --> uic

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

生成源代码 Ui_Main.py
底部提示:Process finished with exit code 0 , 其中 0 表示成功。
如果是 -1 表示执行失败。

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

8)查看源代码

Designer图形工具设计后生成的源代码,图像定义的核心代码是 setupUi()方法。

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'D:\projects\pycharm\p377test\main\Main.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
  MainWindow.setObjectName("MainWindow")
  MainWindow.resize(800, 600)
  self.centralwidget = QtWidgets.QWidget(MainWindow)
  self.centralwidget.setObjectName("centralwidget")
  MainWindow.setCentralWidget(self.centralwidget)
  self.menubar = QtWidgets.QMenuBar(MainWindow)
  self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
  self.menubar.setObjectName("menubar")
  MainWindow.setMenuBar(self.menubar)
  self.statusbar = QtWidgets.QStatusBar(MainWindow)
  self.statusbar.setObjectName("statusbar")
  MainWindow.setStatusBar(self.statusbar)
  self.retranslateUi(MainWindow)
  QtCore.QMetaObject.connectSlotsByName(MainWindow)
 def retranslateUi(self, MainWindow):
  _translate = QtCore.QCoreApplication.translate
  MainWindow.setWindowTitle(_translate("MainWindow", "登录"))

9)总结

前面,用 PyQt5 Designer 设计了一个界面,保存为 ui 文件;
通过 uic 将 ui 文件转换成 py 代码。

这个py代码还不能执行,因为这些代码只是创建了界面的组件。

需要编写控制代码,才能显示界面。

二、通用mvc框架

引入mvc框架的可以解决图形界面代码覆盖的问题,实现界面和控制逻辑分离。

界面生成后,如果把控制逻辑也写进界面代码,下一次修改保存界面就会把控制逻辑代码覆盖。

因此,防止代码覆盖的角度,需要将控制逻辑和界面代码分离,这样无论如何怎样修改界面代码,也不影响控制逻辑的代码。

第二点,从设计模式为出发点,考虑客户端应用以及组件的控制方式,mvc模式是最佳的实践。通过将代码按照界面(View)、数据模型(Model)和控制逻辑(Control)进行划分,每一个部分关注应用的不同功能,代码分工清晰,责任明确。

1)新建控制代码

右键点击 main 目录,弹出菜单,选择 New -> Python File

pycharm开发一个简单界面和通用mvc模板(操作方法图解)
pycharm开发一个简单界面和通用mvc模板(操作方法图解)

pycharm开发一个简单界面和通用mvc模板(操作方法图解)

2)通用模板

在Main.py中,增加如下内容:

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
from Ui_Main import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
 # ---------------------------------------------------------------------------------
 #
 #  初始化
 #
 # ---------------------------------------------------------------------------------
 def __init__(self):
  super(MainWindow, self).__init__()
  self.setupUi(self)
if __name__ == '__main__': # 判断本文件是否是启动入口,__main__是系统赋给启动模块的变量值;
 app = QtWidgets.QApplication(sys.argv) # 如果是启动文件,则创建 Application 实例 app
 window = MainWindow()     # 创建 MainWindow 的实例 window
 window.show()       # 显示窗口
 sys.exit(app.exec_())     # 捕获 app 退出状态

这是一个通用的、最简单的模板。
通过 from Ui_Main import Ui_MainWindow导入图形界面的定义类。
通过继承的方式使用界面类,class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow),并在初始化方法中,调用图形定义代码 setupUi()

3) 设置源代码根目录

右键点击 main 目录,选择 Make Directory as --> Sources Root
pycharm开发一个简单界面和通用mvc模板(操作方法图解)

4) 运行

pycharm开发一个简单界面和通用mvc模板(操作方法图解)
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
上面第3)、4)步图中的 main.py 应为 Main.py。

总结

到此这篇关于pycharm开发一个简单界面和通用mvc模板(操作方法图解)的文章就介绍到这了,更多相关pycharm开发界面和通用mvc模板内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
解决python opencv无法显示图片的问题
Oct 28 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
Python selenium的这三种等待方式一定要会!
Jun 10 Python
Python列表如何更新值
May 27 #Python
Python模拟伯努利试验和二项分布代码实例
May 27 #Python
基于python纯函数实现井字棋游戏
May 27 #Python
Python实现读取并写入Excel文件过程解析
May 27 #Python
Python正则表达式如何匹配中文
May 27 #Python
使用python创建Excel工作簿及工作表过程图解
May 27 #Python
Python实现疫情通定时自动填写功能(附代码)
May 27 #Python
You might like
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
js常用排序实现代码
2010/12/28 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
python中的列表推导浅析
2014/04/26 Python
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python实现TF-IDF算法解析
2018/01/02 Python
Python实现自动上京东抢手机
2018/02/06 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
城管大队整治方案
2014/05/06 职场文书
学习演讲稿范文
2014/05/10 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
Golang 遍历二叉树
2022/04/19 Golang