PyQt5学习随笔

来源:互联网 发布:程序怎么变成软件 编辑:程序博客网 时间:2024/06/16 09:41

在学习pyqt5的过程中碰到的问题,以及一些关键知识点的记录,方便自己再学习。


在python2.7中继承QWidget时super的用法

from PyQt5.QtWidgets import QWidgetclass Example(QWidget):    def __init__(self):        super(QWidget,self).__init__()    '''    other things    '''

判断发送信号的信号源是哪一个

self.sender()

从QObejct生成的对象可以发送信号

首先要继承QObject,并在里面添上自己需要的信号对象。

from PyQt5.QtCore import pyqtSignal, QObjectclass Example(QObject):    xxsignal = pyqtSignal()

然后连上槽(很古怪的名字,目前学得浅我就当作函数来看了)

from PyQt5.QtWidgets import QMainWindowclass Example(QMainWindow):    '''    other things    '''    self.x = Example()    #比如连上close这个槽    self.x.xxsignal.connect(self.close)

最后发射信号

def xxEvent(self):    self.x.xxsignal.emit()

实现的效果就是xxEvent触发时关闭应用。

自己写个槽

首先,随便写个传参self的函数,里面就是你要干的事

from PyQt5.QtWidgets import QWidgetclass Example(QMainWindow):    '''    other things    '''    def xxed(self):        #让状态栏显示xxed!        self.statusBar().showMessage('xxed!')

然后,连接一个信号

class Example(QMainWindow):    '''    other things    '''    #xx组件的点击信号连接xxed这个槽    xx.clicked.connect(self.xxed)

实现的效果就是点击xx组件会让状态栏显示xxed!

各种QDialog小结

QInputDialog(输入对话框)
QColorDialog(颜色选择对话框)
QFontDialog(字体选择框)
QFileDialog(文件对话框)

一般使用方法如下:

QxxDiaglog.getxx()

接下来是具体的各种常用的方法:

text, ok = QInputDialog.getText(self, 'Input Dialog Title', 'Input Dialog Text')color = QColorDialog.getColor()font, ok = QFontDialog.getFont()filename = QFileDialog.getOpenFileName(self, 'Open file')

让按钮有两种状态,按下和没有按下

正常情况下的QPushButton

btn = QPushsbutton()btn.clicked.connect(self.xxed)

可以切换状态的QPushButton

btn = QPushsbutton()btn.setCheckable(True)btn.clicked[bool].connect(self.xxed)

槽的写法

def xxed(self,pressed):    btn = self.sender()    if pressed:        pass    else:        pass    '''    other things    '''

在pyqt里面经常出现的类似btn.clicked[bool]这种写法的含义

我先是把[bool]删除了,发现程序还是正常运行,难道这个[bool]真的是多余的?
于是我做了如下实验
实验内容
可以清楚地发现每一次的connect都是不一样的方法,本来想比较下带[bool]和不带[bool]的区别,看来只能暂时放一放了~~


参考
http://zetcode.com/gui/pyqt5/
http://www.cnblogs.com/archisama/

1 0