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

来源:互联网 发布:异次元软件 编辑:程序博客网 时间:2024/06/05 14:48
参考:第一个程序 — 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 sysfrom 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_() 来取代它。'''








0 0