python 版qt入门级使用说明

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

  1. pip3 install PyQt5

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

  1. from PyQt5 import QtWidgets, QtGui
  2. import sys
  3.  
  4. app = QtWidgets.QApplication(sys.argv)
  5. window = QtWidgets.QWidget();
  6. window.show()
  7. 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+右键,在当前路径打开控制台,执行如下命令:

  1. pyuic5 form.ui -o form.py

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

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

可以看看form.py的内容:

  1. # -*- coding: utf-8 -*-
  2.  
  3. # Form implementation generated from reading ui file 'form.ui'
  4. #
  5. # Created by: PyQt5 UI code generator 5.10.1
  6. #
  7. # WARNING! All changes made in this file will be lost!
  8.  
  9. from PyQt5 import QtCore, QtGui, QtWidgets
  10.  
  11. class Ui_Form(object):
  12. def setupUi(self, Form):
  13. Form.setObjectName("Form")
  14. Form.resize(1420, 780)
  15. self.pushButton = QtWidgets.QPushButton(Form)
  16. self.pushButton.setGeometry(QtCore.QRect(0, 710, 141, 41))
  17. font = QtGui.QFont()
  18. font.setPointSize(12)
  19. self.pushButton.setFont(font)
  20. self.pushButton.setObjectName("pushButton")
  21. self.label = QtWidgets.QLabel(Form)
  22. self.label.setGeometry(QtCore.QRect(0, 0, 700, 700))
  23. font = QtGui.QFont()
  24. font.setPointSize(20)
  25. self.label.setFont(font)
  26. self.label.setStyleSheet("QLabel{\n"
  27. " border-width: 1px;\n"
  28. " border-style: solid;\n"
  29. " border-color: rgb(255, 0, 0);\n"
  30. "}")
  31. self.label.setObjectName("label")
  32. self.label_2 = QtWidgets.QLabel(Form)
  33. self.label_2.setGeometry(QtCore.QRect(710, 0, 700, 700))
  34. font = QtGui.QFont()
  35. font.setPointSize(20)
  36. self.label_2.setFont(font)
  37. self.label_2.setStyleSheet("QLabel{\n"
  38. " border-width: 1px;\n"
  39. " border-style: solid;\n"
  40. " border-color: rgb(0, 0, 255);\n"
  41. "}")
  42. self.label_2.setObjectName("label_2")
  43.  
  44. self.retranslateUi(Form)
  45. self.pushButton.clicked.connect(Form.test)
  46. QtCore.QMetaObject.connectSlotsByName(Form)
  47.  
  48. def retranslateUi(self, Form):
  49. _translate = QtCore.QCoreApplication.translate
  50. Form.setWindowTitle(_translate("Form", "Form"))
  51. self.pushButton.setText(_translate("Form", "选择文件夹"))
  52. self.label.setText(_translate("Form", "原图"))
  53. self.label.setAlignment(QtCore.Qt.AlignCenter) # 让字体居中,自己加的
  54. self.label_2.setText(_translate("Form", "结果图"))
  55. self.label_2.setAlignment(QtCore.Qt.AlignCenter) # 让字体居中

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

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

  1. #coding=utf-8
  2. from PyQt5.QtWidgets import *
  3. from PyQt5 import QtWidgets,QtGui
  4. import os
  5.  
  6. from form import Ui_Form #导入我们的界面文件
  7.  
  8. class LoginDlg(QDialog,Ui_Form):
  9. def __init__(self, parent=None):
  10. super(LoginDlg, self).__init__(parent)
  11. self.setupUi(self)
  12.  
  13. self.setWindowTitle("肝脏分割演示")
  14. # self.resize(1800, 1000)
  15.  
  16. #获取选择文件夹路径
  17. def getPath(self):
  18. seriesPath = QFileDialog.getExistingDirectory(self,"选取文件夹","./")
  19. # print(seriesPath)
  20. return seriesPath
  21.  
  22. def test(self): # 这个test函数就是定义UI时跟pushButton连接的那个函数,这里实现功能
  23. seriesPath=self.getPath()
  24. for _,dirs,files in os.walk(seriesPath):
  25. for f in files:
  26. if os.path.splitext(f)[1]=='.bmp':
  27. picPath=os.path.join(_,f)
  28. print(picPath)
  29. pic=QtGui.QPixmap(picPath)
  30. # pic=pic.scaled(850,850) # resize 图像大小进行显示
  31. self.label.setPixmap(pic)
  32. self.label_2.setPixmap(pic)
  33. # self.origin.update()
  34. self.label.repaint()
  35. self.label_2.repaint()
  36. # self.repaint()
  37. time.sleep(1) # 时间延迟1s
  38.  
  39. if __name__=="__main__":
  40. import sys
  41. import time
  42.  
  43. app = QtWidgets.QApplication(sys.argv)
  44. dlg=LoginDlg()
  45. dlg.show()
  46. 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. 错误RSA host key for [ip address] has changed and you have requested strict checking.

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS ...

  2. django学习~models之查询

    一 简介:今天学习models查询的一些东西 二 理解概念 Queryset 定义 从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet 三 细节学习 一 常用的models函数 . ...

  3. java 多线程三

    java 多线程一 java 多线程二 java 多线程三 java 多线程四 注意到 java 多线程一 中 MyThread2 运行结果出现0.-1,那是因为在操作共享数据时没有加锁导致. 加锁的 ...

  4. TeamCity 和 Nexus 的使用

    参考:http://www.jianshu.com/p/255a484555d9 TeamCity 安装部署(Linux 环境) 在我讲之前,如果你英文还可以,就到官网这里看下: Installati ...

  5. 解决Centos下yum无法更新

    问题: http://mirrors.cloud.aliyuncs.com/epel/6/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - ...

  6. <crtdbg.h> 的作用

    1.在调试状态下让win程在输出窗口中显示调试信息,可以用_RPTn 宏n为显示参数比如_RPT0(_CRT_WARN,"text"); _RPT1(_CRT_WARN," ...

  7. 查看Windows版本号

    1.Win+R,在运行中输入:msinfo32 2.在cmd中输入:ver 3.注册表(regedit)中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows ...

  8. SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具

    http://scons.org/ https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html 后附:另外,WAF是一个基于sc ...

  9. BootStrap学习从现在开始

    前言 原文链接 http://aehyok.com/Blog/Detail/6.html 当下最流行的前端开发框架Bootstrap,可大大简化网站开发过程,从而深受广大开发者的喜欢.本文总结了Boo ...

  10. lnmp环境下piwiki网站流量分析工具的安装及配置

    piwiki统计网站的安装 Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等- Piwi ...