GitHub连接:
本专栏所有源代码的GitHub直通车

在上一篇中已经讲了一个pyqt5的基本框架是什么,这篇使用QTdesigner来设计一下界面
第一篇:pyqt5的基本框架

1、QTdesigner

QTdesigner是一个GUI可视化设计软件,我就没有在Python的那个pyqt5 tools里面下,我是通过安装QT5.9.8来获得的,因为后面可能会接触一下使用C++写的QT。这个可视化工具其实是类似于visual base、C#这种语言的,这两种语言设计上位机的时候都可以直接通过拖动来实现GUI界面的设计,然后生成代码,自己只需要去写界面的逻辑代码就可以了。

启动QTdesigner 选最后一个,就可以创建一个空白的窗口

左边一栏就是各种控件,在这里我拉了两个text edit、两个pushbutton出来构成了一个界面

这个时候保存即可。

保存的文件是.ui文件,是标准的xml文件,而在开发过程中,如果是用C++开发则需要转化为.cpp文件,现在是pyqt,所以需要将.ui文件转化为.py文件,在.ui文件的目录下的命令行输入命令

pyuic5 -o demo.py demo.ui

看一下我上面设计的ui文件对应的py代码

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file '02.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(748, 523)self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(90, 160, 75, 23))self.pushButton.setObjectName("pushButton")self.retranslateUi(Form)self.pushButton.clicked.connect(Form.close)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton.setText(_translate("Form", "pushButton"))

2、调用设计好的界面代码

在这里开始就会讲述界面和代码分离。
首先这个时候需要两个py文件,一个是刚刚从ui文件转化出来的py文件,一个是我们程序运行的py文件,也就是说生成的代码文件要单独的作为一个包使用。在新建的py文件中要导入这个包
所以import部分为:

from ui2 import Ui_Form#导入在QTdesigner设计好的 ui.py 文件
import sys
from PyQt5 import QtWidgets

主程序框架不变:

mydesigner依然是自己定义的一个类
QApplication 相当于 main 函数,也就是整个程序(有很多文件)的主入口函数。
对于一个 Gui 程序必须至少有一个这样的一个实例来让程序运行。

最后一句是调用 sys 库的 exit 退出方法,退出条件(参数)是
app.exec_()也就是整个窗口关闭。

if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)myshow = mydesigner()myshow.show()sys.exit(app.exec_())

自定义的类:

class mydesigner(QtWidgets.QWidget):def __init__(self):super(mydesigner,self).__init__()self.new = Ui_Form()#创建实例  self.new.setupUi(self)#加载窗体,但是还未显示出来

也可以直接让mydesigner这个类继承自定义的Ui_Form类,此时可以直接self.setupUi,
继不继承的区别在于调用Ui_Form类的内容方法的不一样。Ui_Form类是使用QTdesigner生成的类

class mydesigner(QtWidgets.QWidget,Ui_Form):def __init__(self):super(mydesigner,self).__init__()self.setupUi(self)

运行结果

(2)pyqt5教程--->使用QTdesigner实现界面代码分离相关推荐

  1. (转)flex中使用swc实现更好的界面代码分离

    flex中使用swc实现更好的界面代码分离 转自:http://www.cnblogs.com/yjmyzz/archive/2010/07/26/1785265.html 前几天写过一篇" ...

  2. flash开发中如何实现界面代码分离

    "flash开发"发展到今天,大体上已经细分为二个分支:Flash 设计师 和 Flash程序员,然而设计师不懂代码,程序员不懂设计,如何把这二种角色有机结合起来,实现代码.界面分 ...

  3. (3)pyqt5教程--->信号与槽初试

    GitHub连接: 本专栏所有源代码的GitHub直通车 上一篇已经讲了如何使用QTdesigner生成ui文件并转化为py文件,最终实现界面代码分离的效果 信号与槽作是 QT 的核心机制,是一种高级 ...

  4. PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式

    PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式 文章目录 PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式 1.前言 2.方式一:另建 py ...

  5. PyQt5教程(十二)——实现QQ登录界面(六、实现鼠标拖动界面,鼠标事件)

    PyQt5教程(十二)--实现QQ登录界面(五.实现鼠标拖动界面,鼠标事件) 一.实现界面可以随着鼠标进行拖动 1.主要就是对鼠标事件的实现: def mousePressEvent(self, ev ...

  6. PyQt5教程(十一)——实现QQ登录界面(五、实现密码框中的小键盘图标)

    PyQt5教程(十一)--实现QQ登录界面(五.实现密码框中的小键盘图标) 上篇文件,我们添加了qss样式表,其中也添加了登录界面密码框中的小键盘按钮资源风格. PyQt5教程(十)--实现QQ登录界 ...

  7. pycharm pyqt5实现登陆界面_PyQt5可以实现界面和逻辑代码分离吗?大声说出你的答案!...

    必须的!!! PyQt5作为最强大的Python GUI设计模块,小编在这里告诉大家:PyQt5可以实现界面与逻辑代码分离,实现非常简单,用处特别大! 初学者在学习PyQt5时,使用Qt Design ...

  8. PyQt5教程(八)——实现QQ登录界面(二、加载资源文件)

                                         实现QQ登录界面--加载资源文件 一.创建资源文件: 上篇文章创建了QQ登录界面,本篇介绍创建并加载资源文件. 1.创建资源文 ...

  9. Matplotlib画图教程:在QT界面中嵌入三维图片

    Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制.因此就诞生了做这么一个小模块的想法 ...

最新文章

  1. JNI命令行下编译错误解决方案
  2. The substring() Method in JDK 6 and JDK 7 (jdk6中的substring()会造成内存泄漏)
  3. springcloud(七):配置中心svn示例和refresh
  4. 通俗易懂解释一下C++的构造函数是怎样的呢?
  5. java接口注入空指针_spring 注入空指针是怎么回事?
  6. Redis数据分布哈希后取模
  7. 优先队列priority_queue 用法详解
  8. MySQL存储过程中的3种循环
  9. 数字签名与HTTPS详解
  10. SpringBoot(笔记)
  11. mysql宽字节注入_转宽字节注入详解
  12. knn算法java版_KNN算法的实现详解
  13. 献给自己技术成长的第一年
  14. VB.net chart 控件使用
  15. 黑苹果麦克风无法使用的问题(仅针对自己的配置)
  16. DNS劫持原理,DNS劫持如何解决?
  17. 计时函数clock()与数据类型clock_t
  18. Flutter App 软件测试指南
  19. mysql 用idb文件恢复数据
  20. Tiny4412汇编流水灯代码,Tiny4412裸机LED操作【转】

热门文章

  1. iPhone7(P)广色域显示P3 导致设置RGB值 转sRGB 色值偏差问题 #3C76FF
  2. 功能强大的串口工具:GhostyComm 4.0(万能通讯精灵)
  3. 形容计算机专业好句子,形容专业能力强的句子 这些实用句子get起来
  4. python多线程端口扫描
  5. [转]如来佛祖和玉皇大帝谁大!!唐僧为什么要取经《西游记》中的政治路
  6. 【Java】优雅代码更需要优雅的写法
  7. 在c 语言中 引用数组元素时,【单选题】在 C 语言中,引用数组元素时,其数组下标的数据类型不允许是 A. 整型常量 B. 整型表达式 C. 整形符号常量 D. 整型变量...
  8. windows 下配置 apache 2.2.4+php 5.2.5+mysql 5.0.41+zend 3.3.0最新配置
  9. hdf heg 批量拼接_HEG安装教程(windows平台)
  10. “F1 车王”昏迷 10 年能受访了?某杂志 AI 生成“舒马赫专访”惹众怒,涉事主编遭解雇...