在学习pyqt5的过程中碰到的问题,以及一些关键知识点的记录,方便自己再学习。
在python2.7中继承QWidget时super的用法
from PyQt5.QtWidgets import QWidget
class Example(QWidget):
def __init__(self):
super(QWidget,self).__init__()
'''
other things
'''
判断发送信号的信号源是哪一个
self.sender()
从QObejct生成的对象可以发送信号
首先要继承QObject,并在里面添上自己需要的信号对象。
from PyQt5.QtCore import pyqtSignal, QObject
class Example(QObject):
xxsignal = pyqtSignal()
然后连上槽(很古怪的名字,目前学得浅我就当作函数来看了)
from PyQt5.QtWidgets import QMainWindow
class 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 QWidget
class 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/