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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
为python设置socket代理的方法
Jan 14 Python
详解Python中的循环语句的用法
Apr 09 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
Python单元测试实例详解
May 25 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
django和vue实现数据交互的方法
Aug 21 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php实现httpclient类示例
2014/04/08 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
Bootstrap实现水平排列的表单
2016/07/04 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python实现代码统计程序
2019/09/19 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
计算机个人求职信范例
2014/01/24 职场文书
创优争先心得体会
2014/09/11 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
学校施工安全责任书
2015/01/29 职场文书
九寨沟导游词
2015/02/02 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
七一慰问简报
2015/07/20 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
详解Python常用的魔法方法
2021/06/03 Python
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS