做事从来不坚持的我又开始学习PyQt了。。。。。。
链接附上,不再更新:PyQt5图形界面编程
第一部分
第一个程序
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton
from PyQt5.QtGui import QIcon, QFont class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
'''
在这里我们有两个部件可以显示提示
一个是窗口本身,另一个是按钮
''' #设置提示字体和字号
QToolTip.setFont(QFont('微软雅黑', 10)) #给组件本身设置一个提示
self.setToolTip('this is a widget') #添加一个按钮
btn = QPushButton('Button', self)
#并添加提示
btn.setToolTip('this is a pushbtn')
#设定按钮大小和位置,使用推荐大小
btn.resize(btn.sizeHint())
btn.move(50, 50) #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('icon')
#设置窗口图标
self.setWindowIcon(QIcon('dog.jpg')) self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
如何优雅地退出窗口
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton
from PyQt5.QtCore import QCoreApplication class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #添加一个按钮
btn = QPushButton('Quit', self)
btn.clicked.connect(QCoreApplication.instance().quit)
#设定按钮大小和位置,使用推荐大小
btn.resize(btn.sizeHint())
btn.move(50, 50) #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('quit') self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
PyQt5中的事件处理系统是由信号槽机制(signals and slots)实现的。如果我们点击了这个按钮,就会发出“clicked”这个信号。QtCore.QCoreApplication这个东西包含了程序的主循环,它处理和分派所有的事件,而instance()方法返回的是目前的实例(insatnce)。注意到QtCore.QCoreApplication随着QtGui.QApplication的创建而创建,而由于我们这里用connect()函数将“clicked”事件和可以终止应用的quit()函数联系(connect)在了一起,所以点击按钮,应用终止。这种交流在两个对象之间完成:发送者和接受者,其中发送者是按钮,接受者是应用本身。【这里只要大家对connect方法有个感性的认识就可以了】
消息框
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('Message Box')
self.show() def closeEvent(self, event):
'''
这里我们设定显示一个有两个选项(yes & no)的消息框(message box)
QtGui.QMessageBox.question()方法的第二个参数是出现在标题栏的标题
第三个参数是消息框显示的对话内容,第四个参数是出现在消息框的按钮的组合【用或( | )连接】
最后一个参数是默认按钮,即消息框刚跳出来的时候按enter键就可以执行的按钮
这里我们将函数的返回值存储在了reply这个变量中
'''
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)
example = Example()
sys.exit(app.exec_())
居中显示
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #设置窗口的位置和宽高
self.resize(500, 500)
#设置窗口标题
self.setWindowTitle('center widget')
self.center()
self.show() def center(self):
# 得到主窗口的矩形框架qr
qr = self.frameGeometry()
# 我们调用这些方法来得到屏幕分辨率,并最终得到屏幕中间点的坐标cp
cp = QDesktopWidget().availableGeometry().center()
# 这里我们将矩形框架移至屏幕正中央,大小不变
qr.moveCenter(cp)
# 最后我们将应用窗口移至矩形框架的左上角点,这样应用窗口就位于屏幕的中央了【注意部件的move都是左上角移动到某点】
self.move(qr.topLeft()) if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
第二部分
状态栏(statusbar)
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.statusBar().showMessage('Ready')
#设置窗口的位置和宽高
self.setGeometry(300, 300, 250, 150)
#设置窗口标题
self.setWindowTitle('statusbar')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
菜单栏(menubar)
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
# 创建一个选项有自己的图标和名字
exitAct = QAction(QIcon('dog.jpg'), '&Exit', self)
# 设置对应的一个快捷键
exitAct.setShortcut('CTRL+Q')
# 当鼠标悬停在状态栏的提示信息
exitAct.setStatusTip('Exit Application')
# 当我们选择了这个选项时,一个触发信号(triggered signal)被发出了
# 这个信号和qApp部件的quit()方法相联系(connect),所以信号发出后,程序终止
exitAct.triggered.connect(qApp.quit) statusbar = self.statusBar() menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct) self.setGeometry(300,300,300,300)
self.setWindowTitle('simple menu')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
工具栏
# -*- coding: utf-8 -*- import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
# 创建一个选项有自己的图标和名字
exitAct = QAction(QIcon('dog.jpg'), '&Exit', self)
# 设置对应的一个快捷键
exitAct.setShortcut('CTRL+Q')
# 当我们选择了这个选项时,一个触发信号(triggered signal)被发出了
# 这个信号和qApp部件的quit()方法相联系(connect),所以信号发出后,程序终止
exitAct.triggered.connect(qApp.quit) self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAct) self.setGeometry(300,300,300,300)
self.setWindowTitle('simple menu')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())
做事从来不坚持的我又开始学习PyQt了。。。。。。的更多相关文章
- Python学习笔记之--我又开始学习Python了(随时更新)
2019.02.09 更新 Python 学习计划已经开始几天了,跟着一本叫<Django for beginner>的书籍在学习用Django搭建自己的第一个网站,目前已经进行到第三章, ...
- PyQt 5 的学习引言
Python 是我学习的第二门编程语言,第一门编程语言是C. 曾经用C和C++的一个库(easyx库)写过图形界面应用, 感受就是难受又难看, 现在想学一下 PyQt 5 这个python的库, 用博 ...
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- PyQt学习问题:Model/View中中EditKeyPressed常量平台编辑键(the platform edit key )是什么?
老猿在学习PyQt的Model/View设计时,发现是否允许对视图中的数据项进行编辑的函数setEditTriggers的参数QAbstractItemView.EditTriggers是几个常量的组 ...
- PyQt设计流程
Qt designer 设计流程: 创建一个 PyQt4 的步骤,通常的方法是用 QtDesigner 工具创建 GUI 界面.可以在窗口 上添加部件,并可以对部件进行一些属性配置.一般的过程如下 ...
- pyqt5 动画学习(一) 改变控件大小
入坑pyqt也有半年了,由于人们对事物的审美,静态界面已经不能满足用户,而动画却给人眼前一亮,so,今天来学习pyqt的动画了 由于资料真的是太少,本人也是有啃外国佬的英文进行摸索学习,可能也是触及皮 ...
- python3 发生器 迭代器 内置函数 协程 哈哈我又回来啦
唉 犯傻了,干了一件虽有一点点道理的事情,但是却完全没有效果,我是不是傻,浪费了这么多时间在一件不可能的事情上,果然效果比道理更重要... 被一些琐事耽搁几天,python的学习都给我停了,擦!不过一 ...
- GUI学习之三——QObject学习总结
鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject. 一.所有的QT对象的基类 我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系 from PyQt5.Q ...
- QT学习之windows下安装配置PyQt5
windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...
随机推荐
- centos yum install nginx
nginx newshttp://nginx.org/ nginx news: 2017http://nginx.org/2017.html nginx: Linux packageshttps:// ...
- 名称空间2.0path
Django 1点几跟2点几的区别 2.0path 是什么路径就是什么路径.第一个参数不再是正则表达式. 转换器 path的分组 <int:year> 匹配正整数 <str:year ...
- java之序列化
详细内容 连接https://blog.csdn.net/qq_27093465/article/details/78544505 Java 之 Serializable 序列化和反序列化的概念,作用 ...
- python之路--MySQL多表查询
一 介绍 我们在写项目的时候一般都会建一个数据库,数据库里面会存很多的表,不可能把所有的数据都放在一张表里,因为分表来存数据节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上还不是一个整 ...
- python数据结构与算法第九天【选择排序】
1.选择排序的原理 2.代码实现 def selection_sort(alist): n = len(alist) # 需要进行n-1次选择操作 for i in range(n-1): # 记录最 ...
- Zend Framework2从入门到精通
1. 下载安装zf2的web程序 步骤: 第一步,保证得到一个基本的zf2框架 直接从官网下载并解压即可:http://www.zendframework.org.cn/downloads/lates ...
- SOJ 1685:chopsticks(dp)
题目链接 说实话挺喜欢soj的界面,简简单单,没有多余的东西hhh(但是简单到连内存限制,时间限制都看不到了. 题意是有个“奇葩”的主人公,吃饭要用三根筷子.两根短的一根长的. 现在给你n根筷子,要在 ...
- 动态sql and在前 逗号在后
- U68464 滑稽树上滑稽果(guo)
U68464 滑稽树上滑稽果(guo) 题目描述 小小迪有 n 个约会对象,每个对象有一个约会时长 p[i],小小迪 想尽可能多的去完成他的约会(假设小小迪可以瞬移),每个对象还有 一个忍耐时间 q[ ...
- cf- Educational Codeforces Round 40 -D
题意:给你n个点,m条边,一个起点s,一个终点t的无向图,问在某两个点之间加一条边,不改变s到t的最短路径的值的加法有多少种,所有点一定连接: 思路:首先,默认相邻两点的权值都为1,会改变值的情况有: ...