专栏地址 ʅ(‾◡◝)ʃ


windows 上使用 qtdesigner

找到那个路径直接打开就行了

linux 上使用 qtdesigner

打开 qtcreator 软件


1. 启动软件,新建项目

选择左上角的 文件-新建文件或项目

选择 Qt Designer Form 然后 choose 就可以了

这里我们新建一个 Widget 就可以了, 关于各种控件 我后面的章节会详细的讲解

现在我们终于进入了建好的一个 qt5 widget 窗体界面
这里简单介绍一下 desinger 各个部分的布局作用

  1. 最左面是 各种控件, 可以通过拖拽到窗体来实现向窗体里面添加 控件
  2. 中间是简单的窗体
  3. 中间下方分为俩个选项卡, 一个是动作编辑, 另一个是信号槽的映射关系编辑(具体作用后面讲解)
  4. 最右边分为上下俩部分,上半部分是窗体的所用控件
  5. 下半部分是一个控件的各种属性
    如果你学习过 VB开发可能便于理解这个开发软件界面
    现在你可以 通过拖拽一个按钮来实现向窗体中添加按钮了!
    按钮的控件名称 是 Push Button
    然后 保存 快捷键 ctrl + s (保存路径在新建项目时设置完了)

2. 转换文件

然后我们找到刚刚保存的 form.ui 在其路径打开终端 运行命令:

pyuic5 form.ui -o form.py

就将 这个 .ui 文件 转换成了 python 文件
但是生成的 这个文件不能用, 因为里面只是一个类, 下面我们来调用这个类, 新建另一个文件中, 开始编码了

from form import Ui_Form
from PyQt5.QtWidgets import *
import sys # 这里创建了一个类继承了 QWidget 和用 designer 生成的 Ui_Form类
class MyWin(QWidget,Ui_Form):
"""docstring for Mywine"""
def __init__(self):
super(MyWin, self).__init__()
self.setupUi(self) # 这里调用了 生成的代码中的setupUi 有兴趣的同学可以看看生成代码中的 setupUi 方法做了什么 if __name__ == '__main__':
app = QApplication(sys.argv)
mywin = MyWin() # 实例化一个窗口小部件
mywin.setWindowTitle('Hello world!') # 设置窗口标题
mywin.show() #显示窗口
sys.exit(app.exec())

可能你觉得这样反而费事了, 没什么用, 但是如果你的窗体上有各种控件 的时候,你就知道这种设计的好处了, 这种方法叫做,图形界面与业务逻辑分离, 当你更改图形化界面上的逻辑时 你只需要进入 qtdesigner 更改 ui文件, 然后重新生成 py 文件, 而不需要变更代码, 而开发业务逻辑可以都在这个文件中更改, 而不去更改生成 的 py 文件


但是这个程序根本毫无用途, 所以下一节我会讲解 pyqt5 的核心机制: 信号-槽 机制

最新文章

  1. Java编程中“为了性能”需做的26件事
  2. 【转】eclipse安装SVN插件的两种方法
  3. WebStorage 和 Cookie的区别
  4. HTML5新增属性
  5. 【Cocos2d入门教程三】HelloWorld之一目了然
  6. 打开已存在 Android项目及常见的问题
  7. Android开发UI之布局文件LinearLayout
  8. Object layout in C++ and access control
  9. c# mongo 返回指定的列
  10. pm2 安装使用
  11. Java入门——(3)面对对象(下)
  12. java 虚拟机与并发处理几个问题简要(一)
  13. AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等
  14. 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
  15. 读书笔记之_Win10 与Jmeter5.1.1界面兼容:
  16. tinyweb集成springmvc 的一种可行方式
  17. Java编解码分析
  18. seajs源码分析(一)---整体结构以及module.js
  19. undefined reference to 'pthread_create'问题解决 -- 转
  20. CodeForces 838A Binary Blocks(前缀和)题解

热门文章

  1. C++ 指针与二维数组名
  2. ConcurrentDictionary<T,V> 的这两个操作不是原子性的
  3. Django 聚合分组F与Q查询及choices
  4. Kubernetes 监控:CertManager 自动 HTTPS
  5. 持续集成指南:GitLab 的 CI/CD 工具配置与使用
  6. Linux+Proton without Steam玩红警3指南
  7. postman7种断言的使用
  8. Ubuntu转到root用户后用户名路径没有颜色
  9. liunx之expect操作详解
  10. Gson的使用与理解