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 open读写文件实现脚本
Sep 06 Python
python实现巡检系统(solaris)示例
Apr 02 Python
python读取word文档的方法
May 09 Python
Python安装第三方库的3种方法
Jun 21 Python
python实现发送邮件功能
Jul 22 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
Python中json.dumps()函数的使用解析
May 17 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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
将数组写入txt文件 var_export
2009/04/21 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
jquery选择器简述
2015/08/31 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
新闻专业个人求职信
2013/12/19 职场文书
事业单位接收函
2014/01/10 职场文书
迟到检讨书500字
2014/02/05 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
致青春观后感
2015/06/09 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis