链接附上,不再更新: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了。。。。。。的更多相关文章

  1. Python学习笔记之--我又开始学习Python了(随时更新)

    2019.02.09 更新 Python 学习计划已经开始几天了,跟着一本叫<Django for beginner>的书籍在学习用Django搭建自己的第一个网站,目前已经进行到第三章, ...

  2. PyQt 5 的学习引言

    Python 是我学习的第二门编程语言,第一门编程语言是C. 曾经用C和C++的一个库(easyx库)写过图形界面应用, 感受就是难受又难看, 现在想学一下 PyQt 5 这个python的库, 用博 ...

  3. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  4. PyQt学习问题:Model/View中中EditKeyPressed常量平台编辑键(the platform edit key )是什么?

    老猿在学习PyQt的Model/View设计时,发现是否允许对视图中的数据项进行编辑的函数setEditTriggers的参数QAbstractItemView.EditTriggers是几个常量的组 ...

  5. PyQt设计流程

    Qt designer 设计流程:  创建一个 PyQt4 的步骤,通常的方法是用 QtDesigner 工具创建 GUI 界面.可以在窗口  上添加部件,并可以对部件进行一些属性配置.一般的过程如下 ...

  6. pyqt5 动画学习(一) 改变控件大小

    入坑pyqt也有半年了,由于人们对事物的审美,静态界面已经不能满足用户,而动画却给人眼前一亮,so,今天来学习pyqt的动画了 由于资料真的是太少,本人也是有啃外国佬的英文进行摸索学习,可能也是触及皮 ...

  7. python3 发生器 迭代器 内置函数 协程 哈哈我又回来啦

    唉 犯傻了,干了一件虽有一点点道理的事情,但是却完全没有效果,我是不是傻,浪费了这么多时间在一件不可能的事情上,果然效果比道理更重要... 被一些琐事耽搁几天,python的学习都给我停了,擦!不过一 ...

  8. GUI学习之三——QObject学习总结

    鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject.  一.所有的QT对象的基类 我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系 from PyQt5.Q ...

  9. QT学习之windows下安装配置PyQt5

    windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...

随机推荐

  1. CGI、FAST-CGI、PHP-CGI、PHP-FPM的关系

    转自:https://www.awaimai.com/371.html 关于这一类的文章还有:https://zhuanlan.zhihu.com/p/20694204 在搭建 LAMP/LNMP 服 ...

  2. selenium处理alert弹出框

    import time from selenium import webdriver driver =webdriver.Chrome(r"D:\工具包\chromedriver.exe&q ...

  3. scoketio

    服务器代码let net = require('net'); // 创建服务器 let server = net.createServer(); // 定义一个数组 ,存放每一个连接服务器的客户端用户 ...

  4. Laravel 5.6 模型关联 user 表后查询 user 表数据只能获取第一条数据,不知道怎么获取第二条

    按照开发手册的说法,肯定是指令不够全,附代码图 如果, tests 是文章表, users 是用户表 test.com/tests/1 是 id 为 1 的文章地址( get 访问) 假如 Tests ...

  5. 创建虚拟目录失败,必须为服务器名称指定“localhost”

    关于微信开发过程,远程调试后,再次打开vs出现项目加载失败的解决办法! 第一步: 第二步:打开编辑的页面,把下图这部分直接注释掉 ok了,再加载一次,就好了!

  6. CentOS7学习

    1.为什么学linux? linux开源免费,系统稳定,多用户的操作系统. linux有许多版本,各个版本之间的不同点大概分三种? > 内核不同 > 集成不同的应用 > 定制不同的图 ...

  7. Session和Cookie介绍及常见httpcode

    Cookie和Session,及常见httpcode 1.cookie和session简介: cookie是放在客户端的键值对,用来识别用户信息的,主要包括:名字,值,过期时间,路径和域.路径与域一起 ...

  8. 将WCF寄宿在托管的Windows服务中

    在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能 ...

  9. 库存盘点打印功能生成PDF速度太慢使用页面缓存

    一.业务需求 二.产品设计 三.UI设计 四.程序设计 1.使用behavior配置页面缓存 class WmsCheckController extends Controller { /** * @ ...

  10. supervisor /var/run/supervisor/supervisor.sock not found 或者/tmp/supervisor.sock not found

    刚按装完supervisor,这时候用supervisorctr -c supervisor.conf 会报错: /var/run/supervisor/supervisor.sock not fou ...