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

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

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

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

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

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

    一.提供的类型 QMessageBox.information 信息框 QMessageBox.question 问答框 QMessageBox.warning 警告 QMessageBox.ctit ...

  2. PyQt5 入门

    换了VSCODE开发,感觉比sublime好点,可能是由于第三版老弹框烦人吧.VSCODE看着也挺好看的. 学习 PyQt5 中文教程 0. 安装完之后错误 pip 安装了 pyqt5 from Py ...

  3. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

  4. PyQt5之窗口类型

    [TOC] 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 写在开头 1.1 本文内容 本文的主要内容:PyQt中的窗口部件:QMainWindow,QWidget,QDialog. 上述三 ...

  5. 二、PyQt5基本功能和操作入门

    在这里,我将根据自己的学习历程从初级到高级介绍pyqt5.因为是学到哪里就写道哪里,所以内容排版比较随意.有两点问题需要先说明: 1.虽然界面的设计可以借助qt designer进行拖拽创建,并且可以 ...

  6. python ui学习过程,使用pyqt5实现

    首先安装pyqt5的包,然后打开notebook就可以编写了.当然这样编写,也可以用designer进行. 它是pyqt5-tools的一个exe软件,\Anaconda3\Lib\site-pack ...

  7. PyQt5教程——第一个程序(2)

    用PyQt5写的第一个程序 在这篇PyQt5教程中,我们可以学习一些PyQt5的基础应用. 简单的例子 这是一个显示一个小窗口的简单例子.我们可以做许多这样的窗口.我们可以调整它的窗口尺寸,最大化或最 ...

  8. PyQt5初识

    学习PyQt5是个机缘,那是因为我的linux16.04+python3.6使了浑身解数也装不上PyQt4! PyQt5的官方文档貌似是要钱的!又想快速了解这个东东,我还是借鉴了万能的博客园大佬博主: ...

  9. pyqt5 -——基本功能(HelloWorld)

    一. 简单窗口 这个简单的小例子展示的是一个小窗口.但是我们可以在这个小窗口上面做很多事情,改变大小,最大化,最小化等,这需要很多代码才能实现.这在很多应用中很常见,没必要每次都要重写这部分代码,Qt ...

随机推荐

  1. 最大xor,and,or

    http://210.33.19.103/contest/998 and,or部分 并不用01trie,题目&题解:https://blog.csdn.net/dreaming__ldx/ar ...

  2. JVM-GC日志分析

    程序运行时配置如下参数: -Xms20M -Xmx20M -Xmn10M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio= -XX:+PrintGC ...

  3. Eclipse下对MAVEN进行junit软件测试

    一.Maven project management and build automation tool, more and more developers use it to manage the ...

  4. sql server Cannot resolve the collation conflict between "Chinese_PRC_BIN" and "Chinese_PRC_CI_AS" in the equal to operation

    今天查询二个db,出现这个错误,二种方法,一种是把db里的collation改成一样的:如果不方便可以直接在sql语句后面转一下: select * from table where crm_mscr ...

  5. UISearchBar clearButton

    When the searchBar:textDidChange: method of the UISearchBarDelegate gets called because of the user ...

  6. 关于自动化测试环境的集成(Jenkins+RobotFramework+TestLink+SVN)

    本人主要从事网络安全产品的测试,由于一些产品功能在后期稳定后每个版本的迭代仍需要投入大量的时间和精力去测试,所以近期计划逐步的去了解自动化测试的一些内容来节省和解放一些资源.由于自己并没有什么编码基础 ...

  7. DP一直是自己的弱势 开始练滚动数组——HDOJ4502

    http://acm.hdu.edu.cn/showproblem.php?pid=4502//题目链接 思路 : dp[i]表示 到第i天能获得的最大工资  依次更新 #include<cst ...

  8. Swift REPL入门介绍

    Xcode 6.1 引入了一个新特性用来辅助Swift开发,即Read Eval Print Loop(“读取-求值-输出”循环,简称REPL).熟悉解释型语言的开发者将会对这个命令行环境感到舒适,而 ...

  9. C# Process.Start方法

    System.Diagnostics.Process.Start(); 主要功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制面板”等. Proces ...

  10. WPF中播放视频音频

    首先要在WPF中播放视频和音频,我们就需要用到MediaElement控件,下面我们示例播放音频和视频. 用MediaElement播放音频: 第一步:将你需要播放的音频(mp3)放在你WPF项目的D ...