# -*- coding: cp936 -*-
import sys
from PyQt4 import QtCore, QtGui
class MyDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.quit = QtGui.QPushButton("Quit")
self.change = QtGui.QPushButton("Change")
self.change.setEnabled(False)
# funny widget
self.lcd = QtGui.QLCDNumber(2)
self.slider = QtGui.QSlider(QtCore.Qt.Horizontal)
self.slider.setRange(0, 99)
self.slider.setValue(0)painter . drawPixmap(target , image , source);
def paintEvent(self,event):
painter = QPainter(self)
painter.drawPixmap(0,0,280,390,QPixmap("1.png"))
painter.drawPixmap(300,0,280,390,QBitmap("1.png"))
self.pix = QPixmap("1.png")
self.resize(self.pix.size())
self.setMask(self.pix.mask())
self.pix = QBitmap("2.png")
self.resize(self.pix.size())
self.setMask(self.pix)
def paintEvent(self,event):
painter = QPainter(self)
painter.drawPixmap(0,0,self.pix.width(),self.pix.height(),QPixmap("3.jpg"))
lcd = QtGui.QLCDNumber(self)
sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)
sld.valueChanged.connect(lcd.display)
sender 是发送信号的对象。 receiver 是接受信号的对象。而 slot 是回馈信号的方法。
重载方法
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle(‘Event handler‘)
self.show()
def keyPressEvent(self, e):#这个表示重载方法
if e.key() == QtCore.Qt.Key_Escape:
self.close()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == ‘__main__‘:
main()
在我们的例子中,我们重新实现了 keyPressEvent() 。
def keyPressEvent(self, e):
if e.key() == QtCore.Qt.Key_Escape:
self.close()
sender() 方法知道了消息源
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ‘ was pressed‘)
self.statusBar().showMessage(‘Ready‘)状态栏
组件(Widget)是一个应用最基本的构件。PyQt4 中有大量的组件。按钮,选择框,滑块,列表等等
cb.toggle()
我们设置了窗口的标题,因此我们必须选中选择框。默认情况下,窗口的标题并没有设置,选择框也没有勾中。
self.lineEdit = QtGui.QLineEdit()
self.connect(self.quit, QtCore.SIGNAL("clicked()"),
QtGui.qApp, QtCore.SLOT("quit()"))
self.connect(self.lineEdit, QtCore.SIGNAL("textChanged(const QString&)"),
self.enableChangeButton)
self.connect(self.slider, QtCore.SIGNAL("valueChanged(int)"),
self.SliderChange)
self.connect(self.change, QtCore.SIGNAL("clicked()"),
self.Change)
self.rightLayout = QtGui.QVBoxLayout()
self.rightLayout.addWidget(self.lineEdit)
self.rightLayout.addWidget(self.change)
self.leftLayout = QtGui.QVBoxLayout()
self.leftLayout.addWidget(self.lcd)
self.leftLayout.addWidget(self.slider)
self.layout = QtGui.QHBoxLayout()
self.layout.addWidget(self.quit)
self.layout.addLayout(self.leftLayout)
self.layout.addLayout(self.rightLayout)
self.setLayout(self.layout);
def enableChangeButton(self, text):
self.change.setEnabled(text.isEmpty() == False)#重点
def Change(self):
value = int(self.lineEdit.text())
self.lcd.display(value)
self.slider.setValue(value)
def SliderChange(self):
value = self.slider.value()
self.lcd.display(value)
self.lineEdit.setText(str(value))
app = QtGui.QApplication(sys.argv)
dialog = MyDialog()
dialog.show()
sys.exit(app.exec_())
QListView类提供了一个列表或图标视图到模型
QTreeView则类提供了一个默认的模型/视图实现树形视图中
QTableView中的类提供了默认的模型/视图实现表视图。
QColumnView类提供了一个模型/视图实现列视图中
QTableWidget类提供了默认的模型基于物品的表视图
QTreeWidget类提供了使用预定义树模型的树视图
QListWidget类提供了一个基于项目的列表控件
QDeclarativeView类提供了一个小工具来显示一个Qt声明式的用户界面
QLine类提供了使用整数精度的二维矢量
QProgressBar部件提供水平或垂直进度条
QTextBrowser类提供了超文本浏览格式文本浏览器
QCalendarWidget类提供了一个每月按日历组件,允许用户选择一个日期
QLCDNumber插件播放一些带有LCD般的数字
QGraphicsView类提供了一个小工具,用于显示的内容QGraphicsScene
QGraphicsScene类提供了管理大量的2D图形项的表面上
QLABEL小部件提供了一个文本或图像的显示
VideoPlayer控件是用来进行视频回放
VolumeSlider插件提供了用于控制音频输出装置的音量的滑块
SeekSlider类提供了一个滑块为寻求在媒体流的位置
QWebView类提供了用于查看和编辑网页文件的小工具
而Qt.Vertical | Qt.Horizontal意味着它要在这两个方面的增长
QGridLayout类勾画出部件在网格中
formLayout,horizontalLayout,verticalLayout,verticalSlider,horizontalSlider,verticalScrollBar,horizontalScrollBar文档找不到信息
QDialogButtonBox类是一个小部件,呈现在布局是适合当前控件样式按钮
QCommandLinkButton小工具提供了Vista的风格命令链接按钮
QCheckBox控件提供了一个文本标签的复选框
QToolButton类提供了一个快速访问按钮,命令或选项,通常用于内部QToolBar
QToolBar类提供了一个可移动的面板,包含一组控件
QRadioButton小工具提供了一个单选按钮,文本标签
QPushButton窗口部件提供了一个命令按钮
QScrollArea类提供了一个滚动视图到另一个部
QGroupBox小部件提供一个带标题的分组框框架
QToolBox类提供了选项卡式窗口小部件项目的列
QTabWidget类提供了一个堆栈标签部件
QStackedWidget类提供了一个堆叠部件,其中只有一个部件是在同一时间可见
QAxWidget类是QWidget的 ,它包装一个ActiveX控件
QDateTimeEdit类提供了一个部件的编辑日期和时间
QDial类提供了一个圆形范围控制(如速度计或电位器
QTimeEdit类提供了一个部件的基础上,编辑时间QDateTimeEdit部件
QDateEdit类提供了一个小工具,用于编辑基于日期QDateTimeEdit部件
QComboBox表示widget是一个组合键,弹出的列表中
QFontComboBox widget是一个组合框,让用户选择字体系列
QTextEdit类提供用于编辑和显示两个平原和丰富的文本控件
QPlainTextEdit类提供用于编辑和显示纯文本的小工具
QSpinBox类提供了一个微调框控件
QDoubleSpinBox类提供了一个微调框小部件,需要加倍
QLineEdit中widget是一个单行的文本编辑器