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中用split()方法分割字符串的使用介绍
May 20 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
Python数据类型详解(二)列表
May 08 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
Django stark组件使用及原理详解
Aug 22 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
python调用摄像头的示例代码
Sep 28 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
西式结婚主持词
2014/03/14 职场文书
四年级学生评语大全
2014/04/21 职场文书
开展创先争优活动总结
2014/08/28 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
高三教师工作总结2015
2015/07/21 职场文书
公司安全管理制度范本
2015/08/05 职场文书