博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt4学习笔记2:事件和信号
阅读量:6196 次
发布时间:2019-06-21

本文共 3354 字,大约阅读时间需要 11 分钟。

事件是任何 GUI 程序中很重要的部分。所有 GUI 应用都是事件驱动的。一个应用对其生命期产生的不同的事件类型做出反应。事件是主要由应用的用户产生。但是,也可以通过其他方法产生,比如,网络通信,窗口的管理者,计时器。

 

PyQt 4.5 引入了新的 API 用于信号和槽。

这是旧式的 API 。

QtCore.QObject.connect(self.ui.button_open,QtCore.SIGNAL("clicked()"), self.file_dialog)

新式的更接近 Python 的标准

button.clicked.connect(self.onClicked)

self.ui对应窗口,通过它我们可以访问窗口中的部件。因此,self.ui.button_open对应“打开”按钮。self.file_dialog是信号对应的函数,它是比较重要的部分。

test.py测试代码:

import sysfrom PyQt4 import QtCore, QtGuifrom ui_test import Ui_notepadclass MyForm(QtGui.QMainWindow):    def __init__(self, parent=None):        QtGui.QWidget.__init__(self, parent)        self.ui = Ui_notepad()        self.ui.setupUi(self)        # here we connect signals with our slots        QtCore.QObject.connect(self.ui.button_open,QtCore.SIGNAL("clicked()"), self.file_dialog)    def file_dialog(self):        #self.ui.editor_window.setText('aaaaaaaaaa')        fd = QtGui.QFileDialog(self)        self.filename = fd.getOpenFileName()        from os.path import isfile        if isfile(self.filename):            text = open(self.filename).read()            self.ui.editor_window.setText(text)        if __name__ == "__main__":    app = QtGui.QApplication(sys.argv)    myapp = MyForm()    myapp.show()    sys.exit(app.exec_())

ui_test.py  UI生成代码:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'test.ui'## Created: Sat Jan 11 22:11:39 2014#      by: PyQt4 UI code generator 4.10.3## WARNING! All changes made in this file will be lost!from PyQt4 import QtCore, QtGuitry:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    def _fromUtf8(s):        return stry:    _encoding = QtGui.QApplication.UnicodeUTF8    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError:    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig)class Ui_notepad(object):    def setupUi(self, notepad):        notepad.setObjectName(_fromUtf8("notepad"))        notepad.resize(692, 462)        self.button_open = QtGui.QPushButton(notepad)        self.button_open.setGeometry(QtCore.QRect(60, 10, 75, 23))        self.button_open.setObjectName(_fromUtf8("button_open"))        self.button_close = QtGui.QPushButton(notepad)        self.button_close.setGeometry(QtCore.QRect(290, 10, 75, 23))        self.button_close.setObjectName(_fromUtf8("button_close"))        self.editor_window = QtGui.QTextEdit(notepad)        self.editor_window.setGeometry(QtCore.QRect(20, 50, 651, 381))        self.editor_window.setObjectName(_fromUtf8("editor_window"))        self.button_save = QtGui.QPushButton(notepad)        self.button_save.setGeometry(QtCore.QRect(180, 10, 75, 23))        self.button_save.setObjectName(_fromUtf8("button_save"))        self.retranslateUi(notepad)        QtCore.QObject.connect(self.button_close, QtCore.SIGNAL(_fromUtf8("clicked()")), notepad.close)        QtCore.QMetaObject.connectSlotsByName(notepad)    def retranslateUi(self, notepad):        notepad.setWindowTitle(_translate("notepad", "Form", None))        self.button_open.setText(_translate("notepad", "打开", None))        self.button_close.setText(_translate("notepad", "关闭", None))        self.button_save.setText(_translate("notepad", "保存", None))

 

转载于:https://www.cnblogs.com/rangerhopes/p/3516688.html

你可能感兴趣的文章
程序员修炼之道_从小工到专家_读书分享
查看>>
Linux学习笔记——管道及IO重定向
查看>>
Linux sync命令
查看>>
编译安装php
查看>>
Tomcat的server.xml配置
查看>>
win配置mysql 及一些简单的问题
查看>>
swap 脚本+selinux
查看>>
学习 easyui 之四:禁用 linkbutton 问题之后,颜色变灰,但是还能执行onclick事件
查看>>
MAC--PPT虚拟教程
查看>>
安装 Python3且与系统 Python2共存
查看>>
服务器网卡和HBA网卡
查看>>
如何使用PDF阅读器将PDF转换成图片
查看>>
20-3.自制小型LINUX系统,内核编译,busybox介绍
查看>>
iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄...
查看>>
git删除/撤销远已经push到程服务器上某次代码提交
查看>>
seo长尾关键词操作
查看>>
Zabbix3.0监控Centos 7配置
查看>>
深度学习入门必须理解这25个概念
查看>>
安装rpm文件时提示rpmReadSignature failed 错误
查看>>
制作一款微信表情
查看>>