python 版qt入门级使用说明

我使用的是python3.5安装PyQt5:

pip3 install PyQt5

可以用如下代码测试环境是否安装成功,运行成功会弹出一个窗口:

from PyQt5 import QtWidgets, QtGui
import sys app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget();
window.show()
sys.exit(app.exec_())

如果要像C++那样使用UI该怎么办呢?还是可以使用Qt Creater

打开Qt Creator,新建一个工程,QT -> Qt设计师界面类 -> Widget -> 保存

默认保存就好,不用管保存为form.cpp哪里,因为我们只需要form.ui这个文件

关于创建界面还是和直接在Qt中使用一样。

比如我的例子,我做一个简易界面,包含一个按钮,两个QLabel用于显示图像:编辑信号和槽,选择信号槽编辑,选中button添加监听clicked事件,槽函数我们自定义为test()。(在pushButton上点击然后往外拖动便得到一个信号槽)

然后保存,接下来把form.ui文件编译为form.py文件

到保存form.ui的目录,shift+右键,在当前路径打开控制台,执行如下命令:

pyuic5 form.ui -o form.py

如果找不到pyuic5可执行程序,检查一下环境变量是否正确。(pyuic5是安装pyqt是安装的)

至此界面已经生成,后面就是使用form.py这个界面了

可以看看form.py的内容:

 # -*- coding: utf-8 -*-

 # Form implementation generated from reading ui file 'form.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1420, 780)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(0, 710, 141, 41))
font = QtGui.QFont()
font.setPointSize(12)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(0, 0, 700, 700))
font = QtGui.QFont()
font.setPointSize(20)
self.label.setFont(font)
self.label.setStyleSheet("QLabel{\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: rgb(255, 0, 0);\n"
"}")
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(710, 0, 700, 700))
font = QtGui.QFont()
font.setPointSize(20)
self.label_2.setFont(font)
self.label_2.setStyleSheet("QLabel{\n"
" border-width: 1px;\n"
" border-style: solid;\n"
" border-color: rgb(0, 0, 255);\n"
"}")
self.label_2.setObjectName("label_2") self.retranslateUi(Form)
self.pushButton.clicked.connect(Form.test)
QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "选择文件夹"))
self.label.setText(_translate("Form", "原图"))
self.label.setAlignment(QtCore.Qt.AlignCenter) # 让字体居中,自己加的
self.label_2.setText(_translate("Form", "结果图"))
self.label_2.setAlignment(QtCore.Qt.AlignCenter) # 让字体居中

接下来使用Qt Creater生成的这个界面

打开这个form.py这个文件,可以看到生成了Ui_Form这个类,有一些我们添加的控件。我们只需要导入类,做初始化,然后编写自定义的槽函数就可以了。

 #coding=utf-8
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets,QtGui
import os from form import Ui_Form #导入我们的界面文件 class LoginDlg(QDialog,Ui_Form):
def __init__(self, parent=None):
super(LoginDlg, self).__init__(parent)
self.setupUi(self) self.setWindowTitle("肝脏分割演示")
# self.resize(1800, 1000) #获取选择文件夹路径
def getPath(self):
seriesPath = QFileDialog.getExistingDirectory(self,"选取文件夹","./")
# print(seriesPath)
return seriesPath def test(self): # 这个test函数就是定义UI时跟pushButton连接的那个函数,这里实现功能
seriesPath=self.getPath()
for _,dirs,files in os.walk(seriesPath):
for f in files:
if os.path.splitext(f)[1]=='.bmp':
picPath=os.path.join(_,f)
print(picPath)
pic=QtGui.QPixmap(picPath)
# pic=pic.scaled(850,850) # resize 图像大小进行显示
self.label.setPixmap(pic)
self.label_2.setPixmap(pic)
# self.origin.update()
self.label.repaint()
self.label_2.repaint()
# self.repaint()
time.sleep(1) # 时间延迟1s if __name__=="__main__":
import sys
import time app = QtWidgets.QApplication(sys.argv)
dlg=LoginDlg()
dlg.show()
sys.exit(app.exec_())

运行结果:

PyQt5初级教程(一)的更多相关文章

  1. Python图像处理库:Pillow 初级教程

    Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...

  2. shellKali Linux Web 渗透测试— 初级教程(第三课)

    shellKali Linux Web 渗透测试— 初级教程(第三课) 文/玄魂 目录 shellKali Linux Web 渗透测试—初级教程(第三课) 课程目录 通过google hack寻找测 ...

  3. Mac OS X Terminal 101:终端使用初级教程

    Mac OS X Terminal 101:终端使用初级教程 发表于 2012 年 7 月 29 日 由 Renfei Song | 文章目录 1 为什么要使用命令行/如何开启命令行? 2 初识Com ...

  4. Coding 初级教程(二)——上传已有项目

    Coding 初级教程(二)——上传已有项目 [摘要:方针读者 :已具有 Coding.net 的账号. 本文首要先容若何把项目上传到 Coding.net 上. 分两种环境,一种是项目已归入到 gi ...

  5. [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY

    [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY 发布者:sqqdugdu 时间:10-06 阅读数:2117 测试环境:RHEL 6.1,SecureCRT 5 ...

  6. Window服务初级教程以及log4net配置文件初始化

    Window服务初级教程:http://www.jb51.net/article/48987.htm 另外,配置log4net这个日志功能的时候需要初始化,不然会报没有初始化的错误,而且初始化的节点应 ...

  7. 《自学C语言》初级教程 - 目录

    我现在打算出一个C语言学习教程,目的是为了让初学者能够很容易和更深刻地理解C语言. 你可能有这样的疑问,网上不是有很多的初级教程吗,我需要这个吗?我的回答是:网上的C语言教程讲得不够全面,而且许多的初 ...

  8. Android初级教程理论知识(第三章测试&数据存储&界面展现)

    首先介绍单元测试,我在javaweb部分有详细介绍单元测试框架的一篇文章. 可以先看在javaweb中的单元测试详解篇http://blog.csdn.net/qq_32059827/article/ ...

  9. Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

随机推荐

  1. BSGS算法及其扩展

    bsgs算法: 我们在逆元里曾经讲到过如何用殴几里得求一个同余方程的整数解.而\(bsgs\)就是用来求一个指数同余方程的最小整数解的:也就是对于\(a^x\equiv b \mod p\) 我们可以 ...

  2. 【Gradle】Gradle环境配置

    Windows环境 下载 作者下载的是gradle-4.1-all.zip,下载地址:http://services.gradle.org/distributions 环境配置 GRADLE_HOME ...

  3. python - 系统交互操作(subprocess)

    本文摘于云游道士 链接:https://www.cnblogs.com/yyds/p/7288916.html 个人简化,便于查询. 命令行指令的执行通常有两个比较关注的结果: 命令执行的状态码--表 ...

  4. android 面试题(一)

    1.Android中真实宽高,getWidth和getMeasuredWidth的区别:哪个计算的是真实的宽? getWidth():得到的是View在父Layout中布局好后的宽度值,如果没有父布局 ...

  5. Linux用户组相关指令

    ⒈增加用户组 ①groupadd 用户组名 ⒉删除用户组 ①groupdel 用户组名 ⒊修改用户所在的用户组 ①usermod -g 用户组 用户名 ★用户和用户组的相关文件 ①/etc/passw ...

  6. UML和模式应用5:细化阶段(7)---从需求到设计迭代进化

    1.前言 迭代开发中,每次迭代都会发生从以需求或分析为主要焦点到以设计和实现为主要焦点的转变 分析和面向对象的分析重点关注学习做正确的事,理解案例重要目标,规则和约束 设计工作强调正确的做事,熟练设计 ...

  7. OLAP和OLTP的区别(基础知识) 【转】

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 ( ...

  8. 如何用nodejs创建一个webservice

    Posted on March 25th, 2012 under Express.js, Node.jsTags: Express.js, git, GitHub, node.js Looking f ...

  9. telnet不能用!!!提示:-bash: telnet: command not found

    1.[root@localhost ~]# telnet  2. 查询了是否安装Telnet包,结果如下:  telnet-server-0.17-47.el6.i686  [xinetd (pid ...

  10. Bootstrap报错:Bootstrap's JavaScript requires jQuery

    如题,经百度原来导入顺序的问题,须要先导入Jqeury库,今记之!