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子窗口的创建
		
本文主要是在一个主窗口下创建一个子窗口.主窗口有一个菜单,菜单下只有设置一个选项,点击设置选项,弹出设置界面,点击设置界面关闭则关闭.我在开发的时候遇到两个问题,第一就是一点设置关闭就整个应用都关了, ...
 
随机推荐
- 查看oracle表空间
			
-- 查看oracle表空间 kB, bytes MB, bytes GB from user_segments where segment_type = 'TABLE';
 - 【easy】107. Binary Tree Level Order Traversal II   按层输出二叉树
			
按层输出二叉树,广度优先. 3 / \ 9 20 / \ 15 7 [ [15,7], [9,20], [3] ] /** * Definition for a binary tree node. * ...
 - Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题
			
1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...
 - git branch 分支
			
几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副 ...
 - Android回调监听的实现
			
一.首先定义监听函数 public interface OnKeyValueListener { void getKeyValueClick(String value); } 二.在需要传递内容的 A ...
 - php 获取用户的IP、地址、来源
			
js方法获取用户的 ip 和 地址 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> ...
 - 设计模式 — 工厂方法模式(Factory Method)
			
在开发系统中,经常会碰到一个问题.现在需要实现的一些功能,但是这个功能模块以后一定是需要扩展的,那么现在开发中就不仅要实现现在的功能,还要考虑以后的扩展.那么为了系统的健壮,扩展就要遵循开闭原则(简单 ...
 - nginx 10054报错问题解决方案
			
使用nginx代理,端口8000.tomcat用于后端服务器,端口8080.nginx的error.log中报如下错误: 2018/09/21 09:08:06 [error] 12488#11600 ...
 - A页面跳转到B页面后打开指定tabs标签
			
A页面: <!DOCTYPE html><html lang="en" class="no-js"> <head> ...
 - Oracle 正则表达式 分割字符串
			
inData='12345|张三|男' SELECT REGEXP_SUBSTR (inData, '[^|]+', 1,1) into 用户ID FROM DUAL;SELECT REGEXP_SU ...