pyqt4原始例程--提示_再次确认_关闭_图标_居中

这篇博客介绍了如何使用PyQt4实现应用程序图标、组件提示、窗口关闭确认对话框以及窗口居中显示等功能。通过详细的例程,读者可以学习到PyQt4的基本操作和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:第一个程序 — The PyQt4 tutorial 0.1 documentation

http://www.qaulau.com/books/PyQt4_Tutorial/first_programs.html

非常好的学习PyQt4的网站!!!里面有大量例程可供学习~~~

实现的功能:

(1)图标:展示如何在PyQt中实现应用程序图标。应用程序图标是一个小图像,一般显示在标题栏的左上角
(2)提示:为组件提供提示显示,停留则显示,不停留可自行消失。
(3)关联:按下按钮窗口关闭
(4)再次确认窗口:点击标题栏上的关闭按钮, QWdiget 将出现对话框再次确认是否关闭
(5)位置调整:使窗口显示在屏幕中央

整理后的例程如下:

# -*- coding: cp936 -*-
#easyQtpy4.py
#存在问题:用IDLE运行程序,按button会使程序卡死!!!!!故双击运行或在cmd中运行
#Python语言支持面向过程和面向对象编程。在PyQt4中编程意味着OOP编程。
#使用面向对象编程

import sys
from PyQt4 import  QtCore,QtGui#基本的GUI组件在 QtGui 模块中。

'''在面向对象编程中三个最重要东西是类、数据和方法。
这里我们创建一个名为 Icon 的新类,继承自 QtGui.QWidget 类,意味着我们必须调用两个构造方法
,第一个为 Icon 类,第二个为继承的父类。'''
class Icon(QtGui.QWidget): #Icon是自己取的名字                     
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.resize(250, 150)#只设置窗口的大小,不设置位置
        self.center()#使对话框在屏幕中央显示

    
        #所有这三个类,均继承自 QtGui.QWidget 
        #self.setGeometry(300, 300, 250, 150)
        '''setGeometry() 方法干了两件事,它定义了窗体在屏幕上的位置,并设置窗体的大小。
        开始的两个参数是窗体的x和y的位置,第三个是宽度,第四个是高度。'''
        self.setWindowTitle(u'图标和提示显示')#设置窗口的标题
        self.setWindowIcon(QtGui.QIcon('face.ico'))
        '''最后一个方法设置了应用程序图标。通过这个,我们创建了一个 QIcon 对象,
        QIcon 接受我们想要显示的图标的路径。'''
        
        
        self.setToolTip('This is a <b>QWidget</b> widget')
        #通过调用 setTooltip() 方法来创建提示,我们使用富文本格式
        QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))#设置字体和字号


        #button
        quit = QtGui.QPushButton(u'关闭窗口', self)
        quit.setGeometry(10, 10, 64, 35)#按钮大小和位置
        self.connect(quit, QtCore.SIGNAL('clicked()'),QtGui.qApp,QtCore.SLOT('quit()'))
        '''PyQt4中的事件处理系统是建立信号和槽机制。如果点击按钮,信号 clicked() 将会发射,
        槽可以是PyQt的槽或者任何的Python调用。 QtCore.QObject.connect() 把信号和槽连接起来。
        在这个例子中槽是PyQt预定义的 quit() 槽,
        发射方和接收方两个对象间进行通讯,发射方为按钮,接收方为application对象。'''


    def closeEvent(self, event):#点击右上角关闭,出现再次确认的对话框
        reply = QtGui.QMessageBox.question(self, u'确认退出提示*^_^*',
            u"亲,你真的确定退出吗?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)#出现yes和No的选项

        if reply == QtGui.QMessageBox.Yes:#返回值存储在 relay 变量中
            event.accept()#不做操作,如果点击Yes按钮,表明接受这个事件
        else:
            event.ignore()#还是执行关闭操作,忽略该关闭事件


    def center(self):#使窗口在屏幕中央显示
        screen = QtGui.QDesktopWidget().screenGeometry()#计算屏幕分辨率
        size =  self.geometry()#获得 QWidget 的尺寸。
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)#把窗体移动到屏幕中央




            
app = QtGui.QApplication(sys.argv)#app是自己取的名字,和末尾对应
'''每个PyQt4程序必须创建一个application对象,application在 QtGui 模块中,
#sys.argv 参数是命令行中的一组参数。
#Python脚本可以在shell中运行,这样,我们可以控制脚本的启动。'''
icon = Icon()#将Icon类赋给icon,icon是自己取的名字
icon.show()#show() 方法将窗口呈现在屏幕上。
sys.exit(app.exec_())#app是自己取的名字
'''最后,我们输入应用程序的主事件循环,事件处理从这里开始。
主事件循环从窗口系统接收事件并分发到应用程序的窗口组件上。
当主事件循环结束,如果我们调用 exit() 方法或者主窗口组件被销毁。
sys.exit() 方法确保干净的退出。将通知环境应用程序是如何结束的。'''
'''为什么 exec_() 方法会有下划线,一切皆有含义,
这显然是因为exec是Python的关键字,因此,用 exec_() 来取代它。'''








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值