logo资料库

PyQt4 精彩实例分析26个例子.pdf

第1页 / 共132页
第2页 / 共132页
第3页 / 共132页
第4页 / 共132页
第5页 / 共132页
第6页 / 共132页
第7页 / 共132页
第8页 / 共132页
资料共132页,剩余部分请下载后查看
实例1 Hello Kitty!
实例2 标准对话框的使用
实例3 各类位置信息
实例4 使用标准输入框
实例5 各种消息框的使用
实例6 实现QQ抽屉效果
实例7 表格的使用
实例8 使用进度条
实例9 利用Qt Designer设计一个对话框
实例10 在程序中使用Ui
实例11 动态加载Ui
实例12 基本布局管理
实例13 多文档
实例14 分割窗口
实例15 停靠窗口
实例16 堆栈窗口
实例17 综合布局实例
实例18 可扩展对话框
实例19 利用QPalette改变控件颜色
实例20 窗体的淡入淡出效果
实例21 不规则窗体
实例22 电子钟
实例23 程序启动画面
实例24 基本QMainWindow主窗口程序
实例25 打印文本
实例26 打印图像
实例 1 Hello Kitty! ................................................................................................................ 2 实例 2 标准对话框的使用 .................................................................................................. 5 实例 3 各类位置信息......................................................................................................... 10 实例 4 使用标准输入框 .................................................................................................... 15 实例 5 各种消息框的使用 ................................................................................................ 21 实例 6 实现 QQ 抽屉效果................................................................................................. 29 实例 7 表格的使用 ............................................................................................................. 34 实例 8 使用进度条 ............................................................................................................. 36 实例 9 利用 Qt Designer 设计一个对话框 ...................................................................... 40 实例 10 在程序中使用 Ui ................................................................................................. 47 实例 11 动态加载 Ui .......................................................................................................... 52 实例 12 基本布局管理....................................................................................................... 53 实例 13 多文档 ................................................................................................................... 60 实例 14 分割窗口 ............................................................................................................... 65 实例 15 停靠窗口 ............................................................................................................... 69 实例 16 堆栈窗口 ............................................................................................................... 74 实例 17 综合布局实例....................................................................................................... 76 实例 18 可扩展对话框....................................................................................................... 86 实例 19 利用 QPalette 改变控件颜色 .............................................................................. 90 实例 20 窗体的淡入淡出效果 .......................................................................................... 97 实例 21 不规则窗体 .........................................................................................................107 实例 22 电子钟 ................................................................................................................. 110 实例 23 程序启动画面..................................................................................................... 114 实例 24 基本 QMainWindow 主窗口程序 .................................................................... 117 实例 25 打印文本 .............................................................................................................125 实例 26 打印图像 .............................................................................................................128
实例 1 Hello Kitty! 分类: -- PyQt4 2010-12-02 17:01 2723 人阅读 评论(8) 收藏 举报 本实例实现一个"Hello Kitty!"例子,简单介绍 Qt 编程的基本流程,以及 Qt 程序的编绎运行 方式,实例效果图如图所示。 这是一个简单的例子,整个对话框只有一个按钮,单击该按钮,对话框关闭,退出程序。 实现代码如下: [python] view plaincopyprint? 1. from PyQt4.QtGui import * 2. from PyQt4.QtCore import * 3. import sys 4. 5. app=QApplication(sys.argv) 6. b=QPushButton("Hello Kitty!") 7. b.show() 8. app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()")) 9. app.exec_() 第 1 行导入 PyQt4.QtGui 的所有类及模块,包括 QApplication,所有 Qt 图形化应用程序都 必须包含此文件,它包含了 Qt 图形化应用程序的各种资源,基本设置,控制流以及事件处 理等。 第 5 行新创建了一个 QApplication 对象,每个 Qt 应用程序都必须有且只有一个 QApplication 对象,采用 sys.argv 作为参数,便于程序处理命令行参数。
第 6 行创建了一个 QPushButton 对象,并设置它的显示文本为“Hello Kitty!”,由于此处并 没有指定按钮的父窗体,因此以自己作为主窗口。 第 7 行调用 show()方法,显示此按钮。控件被创建时,默认是不显示的,必须调用 show() 函数来显示它。 第 8 行的 connect 方法是 Qt 最重要的特征,即信号与槽的机制。当按钮被按下则触发 clicked 信号,与之相连的 QApplication 对象的槽 quit()响应按钮单击信号,执行退出应用程序的操 作。关于信号与槽机制在本实例最后将进行详细的分析。 最后调用 QApplication 的 exec_()方法,程序进入消息循环,等待可能输入进行响应。Qt 完成事件处理及显示的工作,并在应用程序退出时返回 exec_()的值。 最后执行程序即可出现上图所示的对话框,一个简单的 Hello Kitty!例子完成。 信号与槽机制作为 Qt 最重要的特性,提供了任意两个 Qt 对象之间的通信机制。其中,信 号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。例如,要将一个窗 口中的变化情况通知给另一个窗口,则一个窗口发送信号,另一个窗口的槽接收此信号并进 行相应的操作,即可实现两个窗口之间的通信。这比传统的图形化程序采用回调函数的方式 实现对象间通信要简单灵活得多。每个 Qt 对象都包含预定的信号和槽,当一某一特定事件 发生时,一个信号被发射,与信号相关联的槽则会响应信号完成相应的处理。 信号与槽机制常用的连接方式为: connect(Object1,SIGNAL(signal),Object2,SLOT(slot)) signal 为对象 Object1 的信号,slot 为对象 Object2 的槽,Qt 的窗口部件都包含若干个预定 义的信号和若干个预定义的槽。当一个类被继承时,该类的信号和槽也同时被继承。开始人 员也可以根据需要定义自己的信号和槽。 信号与槽机制可以有多种连接方式,下图描述了信号与槽的多种可能连接方式。
1.一个信号可以与另一个信号相连 connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1)) 即表示 Object1 的信号 1 发射可以触发 Object2 的信号 1 发射。 2.表示一个信号可以与多个槽相连 connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2)) connect(Object1,SIGNAL(signal2),Object3,SLOT(slot1)) 3.表示同一个槽可以响应多个信号 connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2)) connect(Object3,SIGNAL(signal2),Object2,SLOT(slot2)) 注:本文基本上是经过改编的《Linux 窗口程序设计--Qt4 精彩实例分析》一书的 PyQt4 for windows 版本 可以这么写: b.clicked.connect(app.quit) 这样就少了一些 hardcode 的字符串了,更加 pythonic
实例 2 标准对话框的使用 分类: -- PyQt4 2010-12-03 10:34 2105 人阅读 评论(2) 收藏 举报 和大多数操作系统一样,Windows 及 Linux 都提供了一系列的标准对话框,如文件选择, 字体选择,颜色选择等,这些标准对话框为应用程序提供了一致的观感。Qt 对这些标准对 话框都定义了相关的类,这些类让使用者能够很方便地使用标准对话框进行文件,颜色以及 字体的选择。标准对话框在软件设计过程中是经常需要使用的。 Qt 提供的标准对话框除了本实例提到的,还有 QErrorMessage,QInputDialog, QMessageBox,QPrintDialog,QProcessDialog 等,这些标准对话框的使用在本书的后续 部分将会陆续介绍。 本实例主要演示上面几种标准对话框的使用,如下图所示 在上图中,单击“文件对话框”按钮,会弹出文件选择对话框,选中的文件名将显示在右连, 单击“颜色对话框”按钮,会弹出颜色选择对话框,选中的颜色将显示在右边,单击“字体对话 框”按钮,会弹出字体选择对话框,选中的字体将更新右边显示的字符串。 实现代码如下: [python] view plaincopyprint? 1. # -*- coding: utf-8 -*- 2. from PyQt4.QtGui import * 3. from PyQt4.QtCore import * 4. import sys 5. 6. QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 7. 8. class StandardDialog(QDialog):
9. 10. def __init__(self,parent=None): 11. super(StandardDialog,self).__init__(parent) 12. 13. self.setWindowTitle("Standard Dialog") 14. 15. filePushButton=QPushButton(self.tr("文件对话框")) 16. colorPushButton=QPushButton(self.tr("颜色对话框")) 17. fontPushButton=QPushButton(self.tr("字体对话框")) 18. 19. self.fileLineEdit=QLineEdit() 20. self.colorFrame=QFrame() 21. self.colorFrame.setFrameShape(QFrame.Box) 22. self.colorFrame.setAutoFillBackground(True) 23. self.fontLineEdit=QLineEdit("Hello World!") 24. 25. layout=QGridLayout() 26. layout.addWidget(filePushButton,0,0) 27. layout.addWidget(self.fileLineEdit,0,1) 28. layout.addWidget(colorPushButton,1,0) 29. layout.addWidget(self.colorFrame,1,1) 30. layout.addWidget(fontPushButton,2,0) 31. layout.addWidget(self.fontLineEdit,2,1) 32. 33. self.setLayout(layout) 34. 35. self.connect(filePushButton,SIGNAL("clicked()"),self.openFile) 36. self.connect(colorPushButton,SIGNAL("clicked()"),self.openColor) 37. self.connect(fontPushButton,SIGNAL("clicked()"),self.openFont) 38. 39. def openFile(self): 40. 41. s=QFileDialog.getOpenFileName(self,"Open file dialog","/","Python files(* .py)") 42. self.fileLineEdit.setText(str(s))
43. 44. def openColor(self): 45. 46. c=QColorDialog.getColor(Qt.blue) 47. if c.isValid(): 48. self.colorFrame.setPalette(QPalette(c)) 49. 50. def openFont(self): 51. 52. f,ok=QFontDialog.getFont() 53. if ok: 54. self.fontLineEdit.setFont(f) 55. 56. app=QApplication(sys.argv) 57. form=StandardDialog() 58. form.show() 59. app.exec_() 第 6 行设定 tr 方法使用 utf8 编码来解析文字。 第 13 行设置程序的标题。 第 15 到 17 行创建各个按钮控件。 第 19 行创建一个 QLineEdit 类实例 fileLineEdit,用来显示选择的文件名。 第 20 行创建一个 QFrame 类实例 colorFrame,当用户选择不同的颜色时,colorFrame 会 根据用户选择的颜色更新其背景。 第 23 行创建一个 QLineEdit 类实例 fontLineEdit,当用户选择不同的字体时,fontLineEdit 会根据用户选择的字体更新其内容。 第 25 到 33 行将各个控件进行布局。 第 35 到 37 行将各个按钮的 clicked 信号相应的槽进行连接。
slotFile()方法是文件对话框按钮的 clicked 信号的槽,其中 getOpenFileName()是 QFileDialog 类的一个静态方法,返回用户选择的文件名,如果用户选择取消,则返回一个 空串。函数形式如下: QString getOpenFileName (QWidget parent = None, QString caption = QString(), QString directory = QString(), QString filter = QString(), Options options = 0) QString getOpenFileName (QWidget parent = None, QString caption = QString(), QString directory = QString(), QString filter = QString(), QString selectedFilter = None, Options options = 0) 调用 getOpenFileName()函数将创建一个模态的文件对话框,如下图所示。directory 参数 指定了默认的目录,如果 directory 参数带有文件名,则该文件将是默认选中的文件,filter 参数对文件类型进行过滤,只有与过滤器匹配的文件类型才显示,filter 可以同时指定多种 过滤方式供用户选择,多种过滤器之间用";;"隔开,用户选择的过滤器通过参数 selectedFilter 返回。 QFileDialog 类还提供了类似的其他静态函数,如下表,通过这些函数,用户可以方便地定 制自己的文件对话框。
分享到:
收藏