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子窗口的创建
本文主要是在一个主窗口下创建一个子窗口.主窗口有一个菜单,菜单下只有设置一个选项,点击设置选项,弹出设置界面,点击设置界面关闭则关闭.我在开发的时候遇到两个问题,第一就是一点设置关闭就整个应用都关了, ...
随机推荐
- 微信公众号替换title
说明:项目使用 vue 开发 方法一: 单页应用里整个页面只会在第一次完全刷新,后面只会局部刷新(一般不包括head及里面的title),所以无法在服务器端控制title,只能在页面刷新的时候通过js ...
- Typescript04---模块、命名空间
在Typescript1.5 中,内部模块称作命名空间,外部模块成为模块 一.什么是模块? 模块就是一个或一组功能模块. 模块在其自身的作用域里执行,而不是在全局作用域里.意味着,模块中的变量.函数. ...
- Javal连接字符串为Json
public static String concatJson(String[] keys,String[] values,String[] alreadyJsonKeys){ if(keys==nu ...
- 玩转GET 和 POST
HTTP 基本概念 HTTP Request Methods GET.POST 专业名称是 HTTP Request Methods.但 HTTP Request Methods 不只是 GET 和 ...
- python第七天(字符编码,字符与字节,文件操作)
一.字符编码: 定义:将人识别的字符转换成计算机能识别的0和1,转换的规则就是字符编码表. 常见编码表:ascii.unicode.GBK 编码表: 1.采用的都是unicode编码表 2.unico ...
- 022 包含min函数的栈
1.题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 2.分析 最初想法是定义一个成员变量min来存放最小元素,但是当最小元素弹出后,min ...
- 20165235 实现pwd功能
20165235 实现pwd功能 要求 学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3.实现mypwd 测试mypwd 实现过程 pwd是将当前的文件目录 ...
- mysql分库分表,做到永不迁移数据和避免热点
作者:老顾聊技术 搜云库技术团队 来源:https://www.toutiao.com/i6677459303055491597 一.前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就 ...
- Nastya Is Buying Lunch
At the big break Nastya came to the school dining room. There are nn pupils in the school, numbered ...
- Metasploit运行环境内存不要低于2GB
Metasploit运行环境内存不要低于2GB Metasploit启用的时候,会占用大量的内存.如果所在系统剩余内存不足(非磁盘剩余空间),会直接导致运行出错.这种情况特别容易发生在虚拟机Kali ...