pythonGUI编程——Qt库(1)
1.简单示例实现一个小窗口。
PyQt5是一种高级的语言,下面只有几行代码就能显示一个小窗口。底层已经实现了窗口的基本功能。
#!/usr/bin/python
#coding:utf-8
#简单的例子
import sys
#引入模块,基本控件位于pyqt5.qtwidgets
from PyQt5.QtWidgets import QApplication,QWidget
if __name__ == '__main__':
#每一个pyqt5应用程序必须创建一个应用程序对象。
#sys.argv参数是一个列表,从命令行输入参数
app = QApplication(sys.argv)
#QWidget部件是pyqt5所有用户界面的基类。
w = QWidget()
#resize方法调整窗口大小。
w.resize(250,150)
#move()方法移动窗口在屏幕上的位置,窗口打开初始位置
w.move(300,300)
#设置窗口标题
w.setWindowTitle('hello')
#显示在屏幕上
w.show()
#系统exit()方法确保应用程序干净的退出
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
将会显示一个小窗口:
2.在窗口左上角显示一个小小的图标。
#!/usr/bin/python
#coding:utf-8
import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QIcon
#创建Example子类,并且继承QWidegt父类
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#设置窗口的位置和大小
self.setGeometry(300,300,300,300)
#设置窗口标题
self.setWindowTitle('hello')
#设置窗口的图标,引用当前目录下的图片
self.setWindowIcon(QIcon('1.jpg'))
#显示窗口
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
super()是一个特殊的函数,它的作用是将父类和子类关联起来。将会显示一个带有皮卡丘图标的小窗口:
3.显示一段按钮提示语。
#!/usr/bin/python
#coding:utf-8
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont,QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#这种静态的方法用于显示工具提示的字体。第二个参数为字体大小
QToolTip.setFont(QFont('ScanSerif',12))
#创建一个提示。
self.setToolTip('This is a <b>QWidegt</b> widget')
#创建一个按钮并为它设置一个提示
btn = QPushButton('Button',self)
btn.setToolTip('This is a <b>QWidegt</b> widget')
#btn.sizeHint()显示默认尺寸
btn.resize(btn.sizeHint())
#移动按钮窗口的位置
btn.move(50,50)
#设置图标
self.setWindowIcon(QIcon('1.jpg'))
self.setGeometry(300,300,300,300)
self.setWindowTitle('Tooltips')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
运行效果图:
4.设置点击推出按钮。
#!/usr/bin/python
#coding:utf-8
import sys
from PyQt5.QtWidgets import QWidget,QPushButton,QApplication
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#设置按钮,取名为Quit
qbtn = QPushButton('Quit',self)
#绑定点击退出事件
qbtn.clicked.connect(lambda:QCoreApplication.instance().quit())
qbtn.resize(qbtn.sizeHint())
qbtn.move(50,50)
self.setGeometry(300,300,300,300)
self.setWindowTitle('Quit button')
self.setWindowIcon(QIcon('1.jpg'))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
代码中lambda为匿名函数,不知道为啥绑定点击退出事件的方法只有设置匿名函数之后才不会报错,希望哪位大佬解答。
运行效果图点击Quit可以关闭窗口:
5.设置关闭提示语,即点击 X 号会有提示。
#!/usr/bin/python
#coding:utf-8
import sys
from PyQt5.QtWidgets import QWidget,QMessageBox,QApplication
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300,300,300,300)
self.setWindowIcon(QIcon('1.jpg'))
self.setWindowTitle('Message box')
self.show()
def closeEvent(self,event):
'''
显示一个消息框,两个按钮Yes 或者 No ,
第一个参数是出现的消息框名称,
第二个参数是消息框显示的文本,
第三个参数是选项Yes或者No,
第四个参数为默认选项No
'''
reply = QMessageBox.question(self,'Message',
"Are you sure to quit?",QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
代码中if语句为判断点击事件如果是yes就退出,如果是no就忽略。
运行效果图:
6.将窗口显示在屏幕中央。
#!/usr/bin/python
#coding:utf-8
import sys
from PyQt5.QtWidgets import QWidget,QDesktopWidget,QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(250,150)
self.center()
self.setWindowTitle('center')
self.show()
#控制窗口到屏幕中心的方法
def center(self):
#获得窗口
qr = self.frameGeometry()
#获得屏幕中心点
cp = QDesktopWidget().availableGeometry().center()
#显示到屏幕中心
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
QtGui,QDesktopWidget类提供了用户的桌面信息,包括屏幕大小。
运行效果图:
---------------------
pythonGUI编程——Qt库(1)的更多相关文章
- C/C++ -- Gui编程 -- Qt库的使用 -- 标准对话框
-----mywidget.cpp----- #include "mywidget.h" #include "ui_mywidget.h" #include & ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽 -- 欢迎界面
程序运行先显示一个对话框,确定进入主程序 1.新建Qt工程,类MyWidget,基类QWidget 2.新建设计师界面类MyDialog,基类QDialog 3.-----main.cpp----- ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽的关联
Qt信号与槽的三种关联方法:1.设计界面关联,编辑信号/槽,自动关联 2.手动关联(1).头文件中定义槽 -----mywidget.h----- #ifndef MYWIDGET_H #define ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结
主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用
1.头文件<QtGui>变成了<QtWidgets> 相应<QtGui/***>变成了<QtWidgets/***> 2.QTextCodec::set ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用小写qDebug调试程序
qDebug作为printf不需要头文件 qDebug()作为cout要使用头文件<QDebug> -----debug.cpp----- -----debug.cpp----- #inc ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局
-----工程WindowTest----- 1.-----窗体类型type.cpp----- #include <QtGui> int main(int argc, char * arg ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用自定义类
1.新建空Qt工程 2.新建C++类HelloQt 3.新建ui文件,添加部件,重命名主窗体(对话框)类名HelloQt,构建生成ui头文件 4.修改头文件helloqt.h #ifndef HELL ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用.ui文件
1.创建Qt空工程 2.添加Qt设计师界面,无按钮对话框helloqt.ui 3.编辑界面,添加部件,修改对话框对象名为HelloQt <?xml version="1.0" ...
随机推荐
- Unity游戏小地图生成
孙广东 2015.6.25 这个在AssetStore上有几个不错的插件, 除了知道原理,能自己实现还是好的. 非常多插件是不会直接使用的.而是要依据自己项目的需求进行改动或者就是自己写. 那么我们 ...
- B1090 [SCOI2003]字符串折叠 区间dp
又一道区间dp,和上一篇类似,但是比他简单,这个只有两种转移方法,不是很复杂.直接判断是否为重复的串就行. 题干: Description 折叠的定义如下: . 一个字符串可以看成它自身的折叠.记作S ...
- bzoj1494
这道题不仅得看俞华程的论文,还得看陈丹琦的论文,否则是不可能做出来的.因为难点在构造矩阵上. 构造矩阵困难在如何表示状态,因为树不能有环,也不能不连通,这里我们引入了最小表示法来表示连续k个点的连通性 ...
- 什么是IaaS,PaaS和SaaS及其区别
云计算的三种服务模式:IaaS,PaaS和SaaS Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software(软件)-a ...
- Hyper-v 3.0 安装centos6.3
Hyper-v 3.0 安装centos6.3 我们说到hyper-v3.0就想到了windows8.windows2012:我们也知道在windows8.windows2012上安装centos系统 ...
- 聊聊 webpack 打包如何压缩包文件大小
想必很多人都经历过做完一个项目后,再打包发现某些文件非常大,导致页面加载时很慢,这就很影响用户体验了,所以在我经历了一些打包后,讲讲如何有效地缩小包体积,加快页面的首屏渲染 动态 polyfill 相 ...
- 如何看待B站疑似源码泄漏的问题?
今天突然看到关于B站源码泄漏事.网曝B站整个网站后台工程源码遭泄露,开源项目平台Github上疑似出现了Bilibili网站后台工程,内含部分用户名密码.目前官方还没对此事作出任何回应,所以还无法确定 ...
- BZOJ 2592 随机化(伪)
思路: 放yousiki大爷题解 http://yousiki.net/index.php/archives/82/ 我写的是随机化 既然gzz证了最终答案的上界是O(N)的 那么我们可以n^2枚举所 ...
- 6CSS之文本
CSS文本:文本缩进(text-indent).文本对齐(text-align).文本修饰(text-decoration).文本大小写(text-transform).字符距离(letter-spa ...
- iOS- Size Class使用教程
1:它引入了一种新的概念,抛弃传统意义上我们适配时所谓的具体宽高尺寸,把屏幕的宽和高分别分成两种情况:Compact-紧凑, Regular-正常(Any-任意,其实就是这2种的组合,所以我没分成3种 ...