很简单的教程,照着做就会。中文的,pyqt简单教程抽象的工具包,因此,如果我们使用较底层的工具包来实现相同的功能,下面的示例代码就会增长很多。+!/usr/bin/pythonmple. pyimport sysfrom PyQt4 import qtGuiapp= QtGui QApplication(sys. argv)widget QtGui. QNidget o)widget. resize(250,150)i get. seWindowTitle('simple)get show()sys. exit(app. exec ()=======import sysfrom PyQt4 import otGui这两句用来载入必须的模块。基本的GUI窗口部件在 QiGui模块中app=QtGui QApplication (sys. argv)每一个PyQ+4稈序都需要有一个 application对象, application类包含在Qt(u模块中。sys.argv参数是一个命令行参数列表。 Python脚本可以从shel中执行,参数可以让我们选择启动脚木的方式。widget=QtGuiQWidget()QWidget部件是PyQt4中所有用户界面类的父类。这里我们使用没有参数的默认构造函数,它没有继承其它类。我们称没有父类的 widget为一个 windowwidget. resize(250, 150)resize(方法可以改变窗∏部件的大小,在这里我们将其设置为250像素宽,150像素扃widget. setwindowfi-le('simple ')这句用来设置窗口部件的标题,该标题将在标题栏中显示widget. show()showo方法将窗口部件显示在屏幕上sys.exit(app.exec ()最后我们进入该稈序的主循环。事件处理从本行语句开始。主循环接受事件消息并将其分发给程序的各个部件。如果调用 exit(或主部件被销毁,主循环就会结束。使用sys. exit(方法退出可以确保程序可以完整的结束,这种情况下系统的环境变量会记录程序是如何退出的也许你会疑惑,为什么exec_(方法会有个下划线。这是因为exe是 Python的关键字,为避免冲突,PyQt使用 exec O替代。L. simple截图: simple13程序图标程疗图标就是一个小图片,通常显示在程序标题栏的左上角。在以下的示例中,我们将学习如何在Pyt中使用程序图标,另外我们还将学习一些新的方法。t!/ usr/bin/pythonH icon. pyImporl sysfrom Py Qt4 import Qtquiclass Icon(QtGui Q Widget)def init (self, parent= None)QiGuiQ Widget. init (self, parent)self. setGeometry(300, 300, 250, 150)self set Window Title(lcon)sclfsct Window Icon(QtGrui QIcon(icons/wcb. png))app-QtGui. QApplication(sys. argv)icon=Iconoicon. showosys.cxit(app. CCc O)上:一个示例采用了面向过稈的方法编写。 Python语言同时支持面向过程和面向对象两种编程方法。Pyt编程是面向对象的class Icon(QiGui Q Widgetdcf init (sclf, parent= Nonc)QtGui. QWidget. init (self, parent)面向对象编程中最重要的是类、属性和方法。以上代码中,我们创建了一个名为Icon的新类,该类继承 QtGui QWidget类。因此我们必须调用两个构造函数con的构造函数和继承类 QiGui. QWidget类的构造函数self. setGeometry (300, 300, 250, 150)cIf sct window Title(toself set Windowlcon(QtGui QIcon (icons/web. png))setGeometryO方法完成两个功能——设置窗口在屏幕上的位置和设置窗口本身的大小。它的前两个参数是窗口在屏幕上的x和y坐标。后两个参数是窗口本身的宽和高。set Window Icone(方法用来设置程序图标,它需要一个Qcon类型的对象作为参数。调用Qon构造函数时,我们需要提供要显示的图标的路径(相对或绝对路径)s Io截图:Icon14显示提示信息我们可以为任何窗口部件设置一个气球提示。#!/usr bin/pythonooltip pyImport sysfrom PyQ14 import QIGuifrom PyQt4 import Qt Coreclass Tooltip(QtGui Q Widgetdcf init (sclf, parent- NoncQtGui. QWidget. init (self, parent)self. setGeometry(300, 300, 250, 150)self. setWindow Title( Tooltip')self. setToolTip(This is a QWidget widget)QtGui. QToolTip set Font(QtGui Q Font('OldEnglish, 10)app=QtGui. QApplication( sys. argy)tooltip= TooltipTooltip. showOsys. cxit(app. ccc O)在本小例中,我们为一个 QWidget类型的窗口部件设置工具提小。self set ToolTip( This is a QWidgetwidget)要创建工具提示,则需要调用 selToolTip)方法。该方法接受富文木格式的参数。Qt Gui. QToolTip setFont(QtGui Q Font('oldEnglish, 10))因为默认的QT¤oTj宇体看起来比较糟糕,我们可以通过上面的语句设置想要的字体和字体大小D. Tooltip回xThiWidget widget截图: tooltip关闭窗口个显而易见的关闭窗口的方式是单击标题栏右上角的X标记。在接卜来的示例中,我们将展示如何用代码来关闭稈序,并简要介绍Qt的信号和槽机制。下面是 QPushButton的构造函数,我们将会在下面的示例中使用它QPushButton( string text, Q Widget parentNone)text表示将显示在按钮上的文本。 parent是其对象,用于指定按钮显示在哪个部件中。在我们的示例中, parent为是一个 QWidget对象。t!/usr/bin/pythont quitbutton. yImport sysfrom PyQt4 import QtGui, QtCoreclass QuitButtonQtGuiQ Widget)def init (self, parent= None)QtGui.Q Widget. init (self, parent)self. setGeometry (300, 300, 250, 150)self set Window Title('quitbutton)quit=QtGui QPush Button(Cquit set Geometry(10, 10, 60, 35)sclf connect(quit, Qt Corc. SIGNALCclickcdo), Qt Gui gApp,QtCore slot 'quitO)app=QtGui Q Application(sys. argv)gb= QuitButlonogb showOsys. exit(app. exec O)it=QtGui QPush Button(Cloquit. setGeometry(10. 10, 60. 35)以上两句用来创建一个按钮并将其放在 QWidget部件上,就像我们将 QWidget部件放在屏幕上一样。self connect(quit, QtCore SiGNALCclickedo), QtGui qApp, QtCore slot quito)PyQt4的事件处理系统建京在信号-槽机制之上。如果我们单击quit按钮,那么信号clicked)就会被触发,槽函数可以是PyQt自带的槽函数,也可以是任何 Python可以调用的函数等。 Qtcore: QObject connect0方法可以将信号和槽函数连接起来。在我们的示例中槽函数是Pyt中已定义的 quito函数。通过 connect方法就可以建立发送者(qut按钮)和接受者(应用程序对象)之间的通信。国qten回回rx「Close截图: quitbutton消息窗口默认情况下,如果我们单击了窗∏标题栏上的ⅹ标记,窗∏就会被关闭。但是有些时候我们恕要改变这一默认行为。比如,我们正在编辑的文件内容发牛了变化,这时若单击X标记关闭窗口,编辑器就应当弹出确认窗口。#!/usr/bin/pythonmessageboxpymport sysfrom PyQt4 import QtGuiclass MessageBox(QtGui Q widget)def init(self, parent= None)ui.QWidgct. init (sclf,self. setGeometry (300, 300, 250, 150self set Window Title('message box,)def closeEvent(self, evenL)reply-QtGui. QMessageBox question(self, MessageAre you sure to quit?, QtGui QMessageBox. Yes,QtGui. QMessageBox NeIf reply==Qt Gui. QMcssagcBox Ycsenl. acceptelseevent. ignoreapp=QtGui. QApplication(sys. argv)gb- Message Boxogb showOsys.exit(app. exec O)如果我们关闭 WIdget窗口, QClosc Evcnt事件就会被触发。要改变原有的 wdigct行为阻止查窗∏的关闭,我们就需要重新实现 closeevente(方法。reply=QtGui.QMessageBox question ( self, MessageAre you sure to quit? QtGui QMessage Box YesQiGui. QMessageBox No通过上面的语句我们可以显示一个带有两个按钮(Yes/No)的消息窗口。第一个字符串参数" Message‘在消息窗冂的标题栏显示。第二个字符串参数以对话的形式显示在消息窗冂中。返叵的结果被保存在 reply变量中if reply ==Qt Gui. QMessageBox YesevenL. acceptevent. ignore我们使用上面的if语句来判断用户选择的结果。如果用户选择了Yes按钮,那么关闭widget窗口并终止应用程序的动作会破允许执行。否则,关闭窗口的动作会被忽略。回 MessageAre you sure to quit?Yes No截图: messagebox将窗口放在屏幕中间以卜的脚木显示了将窗口放在屏幕的中间位置的方法。#!/usr/bin/pythoncentermport sysfrom PyQu import QLGuilass Center(QtGuiQ Widget)def init (self, parent= None)QtGui. QWidgct. init (sclf, parent)self set wself. resize(250, 150)self center(def center(self)screen-QtGui Q Desktop Widget( screen Geometry(size= self geometryself.move(screen. widtho-size width)/2,(scrccn. hcighto-sizc. height)/2pp=Qt Gui. QApplication(sys. argv)gb=Centerqb showOsys. exit(app. exec O)self. resize该语句用来设置 QWidget窗口的大小为250像素宽,150像素高screen-QtGui Q Desktop Widget. screen Geometry该语句用来计算出显示器的分辨率( screen. width, screen. height)size= self geometry该语句用来获取 WIdget窗口的大小(size. width, size height)self move((screen width(-size. width)/2,(screen height()-size. height)/2)该语句将窗口移动到屏幕的中间位置。3PyQt4中的菜单和工具栏主窗口QMain Window类用米创建应用程序的主窗口。通过该类,我们可以创建一个包含状态栏、工只栏和菜单栏的经典应用程序框架。状态栏状态栏是用来显示状态信息的串口部件。#! usr/bin/pystatusrt sysPyQt4 import QtGuiclass Main Window(QtGui QMain Window)def init (sclf, parent= Nonc)QiGui. QMain Window. init (seln)self. resize( 250, 150self set Window Title(statusbar')If status BarO. show Mcssagc(Rcady')op-QtGui. QApplication(sys. argv)main= Main WindowInain show(.cxit(app. ccc O)self status Baro. show Message('Ready)使用 APplication类的 status bar(O方法创建状态栏。使用 show Message方法将信息显在状态栏中statusbarReady截图: statusbar菜单栏菜单栏是GUⅠ程序最明显的组成部分。它由·组位于不同菜单中的命令组成。在控制台程序中,我们必须记住那些晦涩难懂的命令。但在GUI程序中,通过菜单栏我们将命令合理的放置在不同的菜单中米降低学习新应用程序的时问开销。#!/ usr/bin/pythe0