PyQt5(1)——QToolTip, QPushButton, QMessageBox, QDesktopWidget

  1 #面向对象方法
  2 import sys
  3 from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessageBox   #窗口组件
  4 from PyQt5.QtWidgets import QDesktopWidget              #提供桌面窗口信息
  5 from PyQt5.QtGui import QIcon, QFont                    #图标组件,提示框
  6 from PyQt5.QtCore import QCoreApplication
  7
  8 class Example(QWidget): #创建一个新类叫做Example,Example类继承自QWidget类。QWidget组件(类)是PyQt5中所有用户界面类的基础类。
  9
 10     def __init__(self):
 11         super().__init__()  #super()使得Example可以使用其父类QWidget的方法
 12         self.initUI()
 13
 14     ‘‘‘界面主体‘‘‘
 15     def initUI(self):#initUI()中的下述方法(如‘.setblabla‘)都继承自QWidgets类。
 16
 17         QToolTip.setFont(QFont(‘SansSerif‘,8))#这句管理了所有的提示框。静态方法设置了提示框字体的格式,8px大小的SansSerif字体
 18         self.setToolTip(‘This is a <b>QWidget</b> widget‘)#调用setToolTip方法创建提示框,提交给了self对象。提示框中可以使用富文本格式
 19
 20         #self.setGeometry(300,300,800,540)#在屏幕上显示窗口,并设置其尺寸。前两个参数设定位置,后两个设定宽高。相当于是‘.resize()‘+‘.move()‘。
 21         ‘‘‘
 22         这里的‘.setGeometry()‘方法,不能让窗口居中显示,因为它需要具体的数值。
 23         我们可以使用下面的‘.resize()‘与‘.center()‘方法来实现修改窗口尺寸和居中显示。
 24         ‘‘‘
 25         self.resize(800,540)
 26         self.center()
 27
 28         self.setWindowTitle(‘Ubuntu‘)#标题
 29         self.setWindowIcon(QIcon(‘linuxcartoon.jpg‘))#QIcon对象接收图片。
 30
 31         btn = QPushButton(QIcon(‘linuxcartoon.jpg‘),‘A Linux‘,self)#创建一个按钮组件btn,可以指定图标、文本和父对象
 32         btn.setToolTip(‘This is a <b>QPushButton</b> widget‘)#给btn设置一个提示框,富文本<b>指加粗。
 33         btn.resize(btn.sizeHint())#改变btn的大小,‘.sizeHint()‘返回了一个系统推荐值
 34         btn.move(50,50)
 35         btn.clicked.connect(self.msg)#链接按钮触发事件msg
 36
 37         qbtn = QPushButton(‘Quit‘,self)#第二个参数是父组件。父组件是Example组件,它继承了QWiget类。
 38         qbtn.setToolTip(‘It\‘s a button that means <b>quitting</b> this Ubuntu window‘)
 39         qbtn.clicked.connect(QCoreApplication.instance().quit)
 40         qbtn.resize(qbtn.sizeHint())
 41         qbtn.move(200,50)
 42
 43         self.show()
 44
 45
 46     ‘‘‘窗口位置方法‘‘‘
 47     def center(self):
 48         qr = self.frameGeometry()#这里我们获得一个主窗口轮廓的几何图形。
 49         ‘‘‘
 50         一些补充:
 51         geometry.width():客户区的宽度,客户区:不包括标题栏、边框
 52         geometry.height():客户区的高度
 53         frameGeometry.x():窗口轮廓整个框架左上角的坐标x,整个框架:包括边框和标题栏
 54         frameGeometry.y():窗口轮廓整个框架左上角的坐标y
 55         frameGeometry.width():窗口全框架宽度
 56         frameGeometry.height():窗口全框架高度
 57
 58         ‘‘‘
 59         cp = QDesktopWidget().availableGeometry().center()
 60         #QDesktopWidget()获取桌面框架,‘.availableGeometry()‘获得相对于显示器的绝对值,‘.center()‘获取屏幕中心点。
 61         qr.moveCenter(cp)#把qr轮廓框架的中心点移动到cp点(桌面屏幕中心点)
 62         self.move(qr.topLeft())#把self窗口(左上角)移动到qr的topLeft左上角,实现重合。‘.move()‘方法默认以左上角为基点移动。
 63         #self.move(qr.x(),qr.y())这一句和上一句相同效果,‘x(),y()‘指左上角的坐标。
 64
 65
 66     ‘‘‘按键方法‘‘‘
 67     def msg(self):
 68         reply = QMessageBox.information(self,‘Linux‘,"An operating system. ", QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Ok)
 69
 70     def about(self):#QMessageBox.about消息框只有一个按键‘OK‘,‘.about‘所需参数是(QWidget, str, str),图标是本身这个btn按键的图标。
 71         reply = QMessageBox.about(self,‘About Linux‘,"Something about Linux. ")
 72
 73     def closeEvent(self, event):    #当我们关闭一个QWidget,QCloseEvent类事件将会生成。如果要实现关闭前的动作,我们需要修改closeEvent()方法。
 74         reply = QMessageBox.question(self,‘Message‘,"Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)#最后一个参数QMessageBox.No指跳出qusetion框后默认选择No
 75         #QMessageBox::Information、Warning、Critical、Question四种消息框自带图标。若想它们中自定义Icon,只能重写QMessageBox方法,见文末。
 76         if reply == QMessageBox.Yes:
 77             event.accept()      #这里是值,点下右上角的X之后,"关闭Widget"就成了方法参数中的event。
 78         else:                   #在这里进行一次question的选择,并把选择结果赋值给reply。如果reply为Yes则event.accept()运行,反之就ignore这个event。
 79             event.ignore()
 80
 81
 82 if __name__ == ‘__main__‘:
 83     app = QApplication(sys.argv)#所有的PyQt5应用必须创建一个应用(Application)对象。sys.argv参数是一个来自命令行的参数列表。
 84
 85     ex = Example()#需要ex来实例化,使用上面的函数
 86     sys.exit(app.exec_())
 87     ‘‘‘
 88     app.exec_()使得程序可以一直循环运行,直到主窗口被关闭或被终止进程(如果没有这句话,程序运行时会一闪而过)
 89     主循环将在下面两种情况下退出:(1)调用exit()方法,(2)主widget组件被销毁。
 90     sys.exit()可以做到退出时系统不留垃圾,且系统环境将会被通知应用是怎样被结束的。
 91     exec_()方法有一个下划线,是因为exec是Python保留的关键字,所以用exec_()来代替。
 92     ‘‘‘
 93
 94
 95
 96     #未完成
 97     ‘‘‘@@@尝试写一个继承了QMessageBox的方法,使它能自定义图标
 98     class QMessageBox_question(QMessageBox):
 99         def __init__(self):
100             super().__init__()
101             self.AddIcon()
102         def AddIcon():
103
104     当QMessageBox中的元素不能够满足需求时,可以有两种方法。
105     1)声明一个类,从QMessageBox继承而来。然后在其中添加绘制等操作。详见网上另一篇博客:https://www.xuebuyuan.com/896335.html
106     2)自定义一个类,其中包含对QMessageBox的更丰富操作:https://blog.csdn.net/liang19890820/article/details/50586031
107     ‘‘‘

源代码from:http://zetcode.com/gui/pyqt5/

中文翻译:https://www.cnblogs.com/archisama/p/5444032.html

  • 不知为何代码只能在命令行窗口里运行。我使用的Windows PowerShell。
  • 效果如下↓

原文地址:https://www.cnblogs.com/hsh17/p/10969834.html

时间: 2024-10-12 13:26:42

PyQt5(1)——QToolTip, QPushButton, QMessageBox, QDesktopWidget的相关文章

Python——pyqt5——消息框(QMessageBox)

一.提供的类型 QMessageBox.information 信息框 QMessageBox.question 问答框 QMessageBox.warning 警告 QMessageBox.ctitical危险 QMessageBox.about 关于 二.引用 from PyQt5.QtWidgets import QMessageBox 三.代码示例 #消息框 #self 当前窗口的夫窗口 # 消息:信息 QMessageBox.information(self,"消息框标题",

PyQt5 入门

换了VSCODE开发,感觉比sublime好点,可能是由于第三版老弹框烦人吧.VSCODE看着也挺好看的. 学习 PyQt5 中文教程 0. 安装完之后错误 pip 安装了 pyqt5 from PyQt5.QtWidgets import QApplication, QWidget 这句错误:E0611:No name 'QApplication' in module 'PyQt5.QtWidgets' 搜到是要sip,卸载python5重新安装了sip后再试还是错误,但是直接在命令行运行是好

pyqt5窗口跳转

如何在窗体A里点击按钮跳转到窗体B 1.窗体B 的UI文件 1 # -*- coding: utf-8 -*- 2 3 # Form implementation generated from reading ui file 'viewTableUi.ui' 4 # 5 # Created by: PyQt5 UI code generator 5.9 6 # 7 # WARNING! All changes made in this file will be lost! 8 9 from Py

PyQt5快速入门(三)PyQt5基本窗口组件

PyQt5快速入门(三)PyQt5基本窗口组件 一.QMainWindow 1.窗口类型简介 QMainWindow.QWidget.QDialog用于创建窗口,可以直接使用,也可以派生使用.QMainWindow窗口包含菜单栏.工具栏.状态栏.标题栏等,是最常见的窗口形式.QDialog是对话框窗口的基类,主要用于执行短期任务,或与用户进行交互,可以是模态或非模态的.QDialog对话框没有菜单栏.工具栏.状态栏等.QWidget是Qt图形组件的基类,可以作为顶层窗口,也可以嵌入到其它组件中.

PyQt5标准对话框

很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成PyQt5版本. 有些细节忽略了,因为实在不知怎么转换过来.捣鼓了一晚上,总算完成了,好累啊,不过很开心! 效果图: 完整代码: 1 # -*- coding: utf-8 -*- 2 from PyQt5.QtGui import * 3 from PyQt5.QtCore import * 4 f

快捷方式管理(pyqt5升级版) python pytq5

之前用python写了个小软件http://blog.51cto.com/ikezcn/2142638说实话用tk的话界面确实不好看,所以需要改进,看了pyqt5的介绍想要试一下,对于上次写的软件来说这里只是更改了界面而已.上面的程序不再更新. 使用的软件:python3.6pyqt5 安装:pip insatll pyqt5 代码(干货来了,之后会不定时更新):2018-08-30更新 # -*- coding: utf-8 -*- #v2.0 2018-08-30更新 import sys,

QMessageBox消息框

QMessageBox提供两套接口来实现,一种是static functions(静态方法调用),另外一种 the property-base API(基于属性的API) #需要 from PyQt5.QtWidgets import QMessageBox 1 import sys 2 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox 3 4 class Demo(QWidget): 5 de

PyQt5快速入门(七)PyQt5扩展

PyQt5快速入门(七)PyQt5扩展 一.PyQt5项目发布 1.PyInstaller简介 PyInstaller是一款免费易用的打包工具,支持Windows.Linux.MacOS,并且支持32位和64位系统.http://www.pyinstaller.org/PyInstaller安装:pip install pyinstaller 2.PyInstaller使用 PyInstaller使用命令如下:pyinstaller yourprogram.pyPyInstaller使用时需切换

QPushButton class

Help on class QPushButton in module PyQt5.QtWidgets: class QPushButton(QAbstractButton) |  QPushButton(parent: QWidget = None) |  QPushButton(str, parent: QWidget = None) |  QPushButton(QIcon, str, parent: QWidget = None) |   |  Method resolution ord