PyCharm中Qt Designer+PyUIC配置
本文环境配置:
系统=>windows10:64位
语言=>Python:3.7.1
第三方库
PyQT5:5.11.3
pyqt5-tools:5.11.3.1.4
工具=>PyCharm:2018.3.1
使用PyCharm,根据不同的项目搭建独立的虚拟环境
- 打开PyCharm
- 点击New Project
- 选择Pure Python,具体设置如下:
项目路径自定义
选择venv(virtualenv)目录,这里存放一个虚拟的python环境。这里所有的类库依赖都可以直接脱离系统安装的python独立运行。
制定虚拟环境解释器以本地安装的哪个python版本来创建。
用同样的方法在创建一个GUI的项目。这样在我们的Project文件中就有两个文件夹,每一个文件夹对应一个项目。
不同的项目需要不同的第三方库。而PyCharm是根据项目来管理第三方库的安装。这样做的好处有很多。
python项目可以独立部署
防止一台服务器部署多个项目之间存在类库的版本依赖问题发生
也可以充分发挥项目的灵活性
在PyCharm中安装项目需要的包和插件
1、进入GUI项目,安装PyQt5和pyqt5-tools包
2、添加Qt Designer工具,Tools——External Tools——点击右侧的"+"
- Name: 输入最后工具在菜单中的想呈现名称,比如我这里命名为
QT Designer
- Program:
designer.exe
程序的位置,位于当前项目文件\venv\Scripts\
下。注意这里要先安装pyqt5-tools
包,才有这个执行文件 - Working directory:
designer.exe
工作路径,设置为$FileDir$
3、添加PyUIC工具,继续点击"+"
- Name: 输入最后工具在菜单中的想呈现名称
PyUIC
- Program:
pyuic5.exe
程序的位置,位于当前项目文件\venv\Scripts\
下。注意这里要先安装PyQt5
包,才有这个执行文件 - Arguments: 执行语句
$FileName$ -o $FileNameWithoutExtension$.py
- Working dirctory: 工作路径
$FileDir$
至此我们的GUI项目虚拟环境搭建完毕,下面来编写一点代码测试
首先使用手动编写一个登陆窗口
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel,
QLineEdit, QMessageBox, QPushButton)
from PyQt5.QtCore import QCoreApplication
# 主窗体
app = QApplication(sys.argv) # 创建应用对象
LoginWindow = QWidget() # 构造登陆窗口
LoginWindow.setWindowTitle('登陆窗口') # 窗口标题
LoginWindow.resize(300, 180) # 窗口大小
# 姓名Label
name_Label = QLabel(LoginWindow) # 放置在登陆窗口上
name_Label.setText('姓名') # 设置显示文本
name_Label.move(60, 40) # 设置位置
# 输入姓名文本框
name_Edit = QLineEdit(LoginWindow) # 放置在登陆窗口上
name_Edit.move(100, 36) # 设置位置
# 密码Label
pass_Label = QLabel(LoginWindow) # 放置在登陆窗口上
pass_Label.setText('密码') # 设置显示文本
pass_Label.move(60, 80) # 设置位置
# 输入密码文本框
pass_Edit = QLineEdit(LoginWindow) # 放置在登陆窗口上
pass_Edit.move(100, 76) # 设置位置
pass_Edit.setEchoMode(QLineEdit.Password) # 设置输入密码不可见
# 登陆函数
def end_event():
if name_Edit.text() == "":
QMessageBox.about(LoginWindow, '登陆', '请输入姓名')
elif pass_Edit.text() == "":
QMessageBox.about(LoginWindow, '登陆', '请输入密码')
else:
QMessageBox.about(LoginWindow, '登陆', name_Edit.text() + ' 欢迎登陆')
# 登陆按钮
end_Btn = QPushButton('登陆', LoginWindow)
end_Btn.clicked.connect(end_event) # 绑定登陆函数
end_Btn.move(60, 120)
# 退出按钮
exit_Btn = QPushButton('退出', LoginWindow)
exit_Btn.clicked.connect(QCoreApplication.instance().quit) # 绑定退出事件
exit_Btn.move(160, 120)
LoginWindow.show() # 显示窗口
sys.exit(app.exec_()) # 进入消息循环
右键选择Run
运行代码,一个简单的登陆窗口就制作完毕。

下面通过Qt Designer
可视化排版制作窗体,看一下两者的区别
点击Tools——External Tools这里就有刚才添加的两个工具,选择Qt Designer
进入Qt Designer
界面,选择Main Window
,点击Create
在左侧有很多控件选项,在窗体上 添加以下控件,并设置属性:
两个
Label
控件来显示姓名和密码,并在右侧修改控件的objectName
- 姓名标签:name_label
- 密码标签:pass_label
两个Line Edit
控件来让用户输入单行文本,同样修改objectName
属性,而其密码的输入框要设置不可见
- 姓名输入框:name_Edit
- 密码输入框:pass_Edit
,修改echoMode
属性为Password
两个Push Button
控件让用户可以进行点击,修改objectName
属性,
- 登陆按钮:end_Btn
- 退出按钮:exit_Btn
设置退出按钮的信号与槽
在右侧最下方选择Signal/Slot Editor
点击“+”号:
- Sender: 发送者 => 退出按钮exit_Btn
- Signal: 信号 => 单击clicked
- Receiver: 接受者 => 窗体MainWindow
- Slot: 槽 => 关闭事件close
按Ctrl+R预览窗口,看是否是想要的界面。测试OK,保存文件到GUI项目下
回到PyCharm,在GUI项目下面有一个MainWindow.ui
, 就是刚在使用Qt Designer
保存的文件,现在需要将这个文件转换成.py
文件
在该文件上点击右键,选择PyUIC
等程序运行完毕后,会多一个MainWindow.py
的文件
里面已经帮我们编写了窗体的框架代码,但是这个文件无法运行,他只是定义了一个类。
新建一个Py文件,将这个窗体框架文件用import
的方式导入进来,并编写如下代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QMessageBox
from MainWindow import *
class MyWindow(QMainWindow,Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
self.end_Btn.clicked.connect(self.end_event) # 绑定登陆函数
# 登陆函数
def end_event(self):
if self.name_Edit.text() == "":
QMessageBox.about(self, '登陆', '请输入姓名')
elif self.pass_Edit.text() == "":
QMessageBox.about(self, '登陆', '请输入密码')
else:
QMessageBox.about(self, '登陆', self.name_Edit.text() + ' 欢迎登陆')
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())
右键运行,得到和我们手动编写一样的窗口。
对比两者的区别
手动编写的时候,需要大量的代码和运算来设置窗体中的控件属性以及大小位置等。
而使用Qt Designer
来做,
- 先通过可视化的排版。鼠标拖拽,点击就能很轻松的得到一个符合业务逻辑的窗体。
- 然后使用PyUIC将
.ui
文件转换成.py
。 - 最后新建一个文件,将创建好的窗体文件通过
import
的方式导入即可 - 这样的好处是将业务逻辑代码和窗体代码分离。将主要精力放在业务逻辑上,而不是在美化窗体。
PyCharm中Qt Designer+PyUIC配置的更多相关文章
- PyCharm+Qt Designer+PyUIC安装配置教程
Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...
- PyCharm安装配置Qt Designer+PyUIC教程
原文写的不错,拿来大家都可以看一下 原文地址:https://www.cnblogs.com/lsdb/p/9121903.html https://www.cnblogs.com/tiankong2 ...
- PyCharm+PyQt5+Qt Designer配置
配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...
- pycharm中运行时添加配置 及pytest模式怎么修改为run模式
会发现不是控制台输出,而是pytest模式. 修改: 当运行时,发现无法运行: 然后点击Add Configuration, 点击加号,点击Python: 选择脚本路径和解释器.点击OK即可.
- PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程
摘要:Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合.这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的 ...
- Qt Designer设计 UI 文件并调用
本文介绍的是Qt Designer设计 UI 文件并调用,在坛子里逛了一圈,关于UI方面的好像不怎多,本篇给大家分享一下. AD: 2013云计算架构师峰会超低价抢票中 Qt Designer设计 U ...
- PyCharm+QT Designer整合
CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分 ...
- PyCharm怎样添加Qt designer
cmd命令检查是否安装一下工具包 不存在,用pip 命令安装 添加环境变量; QT_QPA_PLATFORM_PLUGIN_PATH ---D:\VNConda\Lib\site-package ...
- QT designer的安装与汉化(pycharm)
QT designer的安装 1.安装好Python3的环境 添加环境变量,保证安装正确, 2.安装PyQt5 采用命令安装,Win+R,输入CMD,打开命令框,输入以下命令.后面是豆瓣的镜像地址,是 ...
随机推荐
- JAVA基础--JAVA API集合框架(其他集合类,集合原理)
一.ArrayList介绍 1.ArrayList介绍 ArrayList它是List接口的真正的实现类.也是我们开发中真正需要使用集合容器对象. ArrayList类,它是List接口的实现.肯定拥 ...
- 草地排水 洛谷P2740 最大流 入门题目
草地排水 洛谷P2740 最大流入门题目 题意 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一 ...
- <<C++ Primer>> 第 7 章 类
术语表 第 7 章 类 抽象数据类型(abstract data type): 封装(隐藏)了实现细节的数据结构. 访问说明符(access specifier): 包括关键字 public 和 ...
- Known Notation括号匹配类问题(2014年ACM/ICPC 亚洲区域赛牡丹江)
题意: 给你数字或 * 的串,你可以交换一个*和数字.在最前面添1.在一个地方插入*,问你使串满足入栈出栈的(RNP)运算法则. 思路: 引用:https://blog.csdn.net/u01158 ...
- 平面割线平分点(构造)--牛客第三场-- Magic Line
题意: 给你n个点的坐标,让你给出两个点,这两个点的连线可以平分这些点. 思路: 先按y的大小排序,在按x的小排序,再搞一下就行了.如下图: #include <bits/stdc++.h> ...
- Codeforces 1229A. Marcin and Training Camp
传送门 垃圾翻译毁一生怎么办 题目看错直接 $GG$ 首先所有 $a_i$ 重复出现的人全都可以加入 考虑剩下的人发现 $a$ 必须是初始那些人的子集才能加入(证明显然),设当前考虑的人为 $x$ 则 ...
- 【Tomcat】热部署的遗留配置导致服务器无法启动
1.问题描述: 今天用myeclipse写了个小demo,然后用Tomcat7 部署了,接着点击启动服务器,服务器居然报错: 严重: Error starting static Resources j ...
- NIO、BIO、AIO
BIO(同步阻塞):Socket编程就是 BIO ,操作时会阻塞线程,并发处理能力低 .阻塞的原因在于:操作系统允许的线程数量是有限的,多个socket申请与服务端建立连接时,服务端不能提供相应数量的 ...
- 实现Promise类
基本使用: let promise = new Promise((resolve, reject) => { // do something if (true) { resolve('succe ...
- C# 面向对象5 this关键字和析构函数
this关键字 1.代表当前类的对象 2.在类当中显示的调用本类的构造函数(避免代码的冗余) 语法: ":this" 以下一个参数的构造函数调用了参数最全的构造函数!并赋值了那些不 ...