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中的Numpy入门教程
Apr 26 Python
python的类变量和成员变量用法实例教程
Aug 25 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python实现微信远程控制电脑
Feb 22 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
python+mysql实现个人论文管理系统
Oct 25 Python
pytorch之添加BN的实现
Jan 06 Python
Python下opencv库的安装过程及问题汇总
Jun 11 Python
基于Python实现流星雨效果的绘制
Mar 18 Python
python实现简单的三子棋游戏
Apr 28 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随机生成福彩双色球号码的2种方法
2013/02/04 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
js实现秒表计时器
2019/12/16 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
python实现类之间的方法互相调用
2018/04/29 Python
django框架使用方法详解
2019/07/18 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
Europcar比利时:租车
2019/08/26 全球购物
九年级家长会邀请函
2014/01/15 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
摄影助理岗位职责
2014/02/07 职场文书
项目建议书怎么写
2014/05/15 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers