pyqt5之简单窗口的创建
在学完tkinter后,发现tkinter在布局方面特别的不方便(Tkinter资料:http://effbot.org/tkinterbook/tkinter-index.htm),
因此学习pyqt5,之前用tkinter写了一个简单的python入门教程的exe,基本都是面向过程的编程思想,
很少将函数式编程思想和面向对象的思想,在学习pyqt5的过程中,希望培养面向对象编程的思想!
关于pyqt5的学习主要参考下面的教程,部分知识及代码相当于是对PyQt5 tutorial的总结!
http://zetcode.com/gui/pyqt5/introduction/ 一.pyqt5各个模块功能
QtCore 模块包含了非GUI的功能设计。
这个模块被用来实现时间,文件和目录,不同数据类型,流,URL,mime类型,线程和进程。
QtGui 模块包含的类用于窗口化的系统结构,事件处理,2D绘图,基本图形,字体和文本。
QtWidgets 模块包含的类提供了一套UI元素来创建经典桌面风格用户界面。
QtMultimedia 模块包含的类用于处理多媒体内容和链接摄像头和无线电功能的API。
QtBluetooth 模块包含的类用于扫描蓝牙设备,并且和他们建立连接互动。
QtNetwork 模块包含的类用于网络编程,这些类使TCP/IP和UDP客户端/服务端编程更加容易和轻便。
QtPositioning 模块包含的类用于多种可获得资源的位置限定,包含卫星定位,Wi-Fi,或一个文本文件。
Enginio 模块用于解决客户端访问Qt云服务托管。
QtWebSockets 模块包含的类用于解决WebSocket通信协议。
QtWebKit 包含的关于浏览器的类用于解决基于WebKit2的支持库。
QtWebKitWidgets 模块包含的关于WebKit1的类基本解决浏览器使用基于QtWidgets应用问题。
QtXml 模块包含的类用于解析XML文件。这个模块提供SAX和DOM API解决方法。
QtSvg 模块提供类用于显示SVG文件内容。Scalable Vector Graphics (SVG) 是一种语言,
用XML来描述二维图形和图形应用程序。
QtSql模块提供类驱动数据库工作。
QtTest 模块包含了方法提供PyQt5应用的单元测试 二. PyQT4 and Pyqt5 fifferences
不兼容pyqt4, 模块被改写,新模块的引入 三.简单窗口的建立
没有父类的组件是顶级窗口。
见例子 四.关闭窗口
QPushButton(string text, QWidget parent = None)
text参数是将显示在按钮中的内容。parent参数是一个用来放置我们按钮的组件 qbtn.clicked.connect(QCoreApplication.instance().quit)
在PyQt5中,事件处理系统由信号&槽机制建立。如果我们点击了按钮,信号clicked被发送。
槽可以是Qt内置的槽或Python 的一个方法调用。QCoreApplication类包含了主事件循环;
它处理和转发所有事件。instance()方法给我们返回一个实例化对象。
注意QCoreAppli类由QApplication创建。点击信号连接到quit()方法,将结束应用。
事件通信在两个对象之间进行:发送者和接受者。发送者是按钮,接受者是应用对象
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication)
from PyQt5.QtGui import QIcon
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication # ----------------------------------------------#
# 简单pyqt5
# ----------------------------------------------# def create_ui():
app = QApplication(sys.argv) # 所有pyqt5必须创建一个QApplication对象 w = QWidget() # 没有父类的widget将被作为窗口使用
w.resize(250, 150) # 大小
w.move(300, 300) # 起始坐标
w.setWindowTitle('GUI') # 标题
w.show()
# 应用进入主循环。在这个地方,事件处理开始执行。
# 主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理。
# 如果我们调用exit()方法或主widget组件被销毁,主循环将退出。
# sys.exit()方法确保一个不留垃圾的退出。
# 系统环境将会被通知应用是怎样被结束的
sys.exit(app.exec_()) # ----------------------------------------------#
# pyqt5修改显示图标
# ----------------------------------------------#
class Example1(QWidget): def __init__(self):
super().__init__()
# super()方法返回了父类对象并调用了父类的构造方法
self.__init_ui() def __init_ui(self): self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('GUI')
self.setWindowIcon(QIcon('f.ico')) self.show() # ----------------------------------------------#
# pyqt5显示提示框
# ----------------------------------------------# class Example2(QWidget): def __init__(self):
super().__init__()
self.__init_ui() def __init_ui(self): # 设置提示框的字体和大小
QToolTip.setFont(QFont('SansSerif', 20)) # 用于显示组件的提示框
self.setToolTip('This is a <b>QWidget</b> widget') # 创建一个按键
btn = QPushButton('Button', self) # 为按键创建提示框
btn.setToolTip('This is a <b>QPushButton</b> widget') # setHint()方法给了按钮一个推荐的大小
btn.resize(btn.sizeHint())
btn.move(50, 50) self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show() # ----------------------------------------------#
# 关闭窗口
# ----------------------------------------------# class Example3(QWidget): def __init__(self):
super().__init__() self.__init_ui() def __init_ui(self):
btn = QPushButton('Quit', self)
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.move(50, 50) self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show() # 测试简单的创建ui # create_ui() app = QApplication(sys.argv) # pyqt5修改显示图标
# ex = Example1() # pyqt5显示提示框
# ex1 = Example2() # pyqt5退出命令,理解信号与槽
ex2 = Example3()
sys.exit(app.exec_())
pyqt5之简单窗口的创建的更多相关文章
- 雷林鹏分享:jQuery EasyUI 窗口 - 创建简单窗口
jQuery EasyUI 窗口 - 创建简单窗口 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: Some Content. 现在运行测试页面,您会看见一个窗口(window)显 ...
- 【QT】利用pyqt5实现简单界面
Topic: 利用pyqt5编写简单界面Env:win10 + Pycharm2018 + Python 3.6.8Date: 2019/4/29 by hw_Chen2018 ...
- python3+pyqt5+opencv3简单使用
python3+pyqt5+opencv3简单使用(转载) 关于python3下搭建pyqt5(pycharm)参考这条链接. 对于pyqt的使用个人比较建议ui设计与逻辑功能分开开发. 下面介绍下简 ...
- Cinder-2 窗口的创建过程
通过TinderBox生成的代码很简单,整个代码如下: #include "cinder/app/AppNative.h" #include "cinder/gl/gl. ...
- vc++窗口的创建过程(MFC消息机制的经典文章)
一.什么是窗口类 在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC ...
- Windows程序设计笔记(二) 关于编写简单窗口程序中的几点疑惑
在编写窗口程序时主要是5个步骤,创建窗口类.注册窗口类.创建窗口.显示窗口.消息环的编写.对于这5个步骤为何要这样写,当初我不是太理解,学习到现在有些问题我基本上已经找到了答案,同时对于Windows ...
- 有谁知道Delphi中"窗口"的创建过程?
求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...
- PyQt5学习--基本窗口控件--QMainWindow
QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布局管理器中. 窗口类型介绍 QMainWindow.QWidget和 ...
- Win32子窗口的创建
本文主要是在一个主窗口下创建一个子窗口.主窗口有一个菜单,菜单下只有设置一个选项,点击设置选项,弹出设置界面,点击设置界面关闭则关闭.我在开发的时候遇到两个问题,第一就是一点设置关闭就整个应用都关了, ...
随机推荐
- 为什么要使用`QuerySet.iterator()`
用django的custom command功能,写了一个脚本,目的是修正生成环境的数据,tqdm告诉我运行时长预估是2小时. 一个小时后,正在吃午饭的我,接到了很多微信推送.客户告诉我服务不可用,同 ...
- 修改Maven仓库路径
我自己新建的地址:D:\apache-maven-3.6.0\repository 找到:localRepository,修改为自定义的位置 在IDEA里面进行配置 这样项目的maven仓库地址就修改 ...
- VUE项目快速构建
IDE :VScode 1.新建项目文件夹 ctrl+~ 调出命令板,/IDE找到当前文件夹右键 点击‘在命令提示符中打开’ 安装 node:官网(https://nodejs.org/en/d ...
- MySQL Server 的安装方法及简要步骤
闲扯两句: 小弟不才,由于缺乏明确的职业规划,初毕业的那两年从事的是网络管理工作,接触最多的是计算机硬件和网络设备. 近几年才开始转向DB行业,最初是自学,过程中走了不少弯路,后来参加的专职的DBA培 ...
- SP283 NAPTIME - Naptime
SP283 NAPTIME - Naptime 题意: 在某个星球上,一天由N小时构成.我们称0-1点为第一个小时,1-2点为第二个小时,以此类推.在第i个小时睡觉能恢复Ui点体力.在这座星球上住着一 ...
- laravel call传参
public function index(Request $request, ApplicationContract $app) { $type = $request->query('type ...
- el-table中单数行与双数行设置不同的背景颜色
<el-table :cell-style='cellStyle' :data="tableData" style="width: 100%;" > ...
- 记录MYSQL中SQL语句的一个坑.
MYSQL5.7 假设我们有一个表 : h_member_cards_my (ID, WXOPEN_ID) 表中有一条记录如下: 理论上第二个SQL应当是可以查询得到一条数据的, 结果却为 Empt ...
- C# dynamic类型序列化和反序列化之Newtonsoft.Json,动态解析远端返回的jSON数据
一.说明 1.Newtonsoft.Json 中的Linq To Json中提供了方便的json数据查询.修改等操作. 例如:JObject,JArray 2.在JObject.FromObject( ...
- sublime text3 安装package control 插件,解决访问被墙的问题
1.在github上下载Package Control的安装包 https://github.com/wbond/sublime_package_control 2.打开sublime存放插件的目录: ...