PyQt4-(7) Tutorial 5



#!/usr/bin/env python
#
 -*- coding:utf-8 -*-
#
 PyQt tutorial 5
#
 Modified by 屈武斌 [quwubin AT gmail.com]
#
 Blog: http://quwubin.cnblogs.com/

# 这一节内容多了一点,添加了一个滑块和数字显示
#
 并演示了列方式布局

import sys
from PyQt4 import QtCore, QtGui


class MyWidget(QtGui.QWidget):
    
def __init__(self, parent=None):
        QtGui.QWidget.
__init__(self, parent)

        quit 
= QtGui.QPushButton("Quit")
        quit.setFont(QtGui.QFont(
"Times"18, QtGui.QFont.Bold))

        lcd 
= QtGui.QLCDNumber(2)
# lcd是一个QLCDNumber,一个可以按像LCD的方式显示数字的窗口部件。
#
 这个实例被设置为显示两个数字
        slider = QtGui.QSlider(QtCore.Qt.Horizontal)
        slider.setRange(0, 
99)
        slider.setValue(0)
        
# QSlider是一个经典的滑块,用户可以通过在拖动一个东西在一定范围内调节一个
#
 整数数值的方式来使用这个窗口部件。这里我们创建了一个水平的滑块,设置它的
#
 范围是0~99(包括0和99,参见QSlider::setRange()文档)并且它的初始值是0。

        self.connect(quit, QtCore.SIGNAL(
"clicked()"),
                     QtGui.qApp, QtCore.SLOT(
"quit()"))
        
        self.connect(slider, QtCore.SIGNAL(
"valueChanged(int)"),
                     lcd, QtCore.SLOT(
"display(int)"))
#这里我们是用了信号/槽机制把滑块的valueChanged()信号和lcd数字的display()槽连接起来了。
#
这一行在两个Qt对象(直接或间接继承QObject对象的对象)中建立了一种单向的连接。
#
每一个Qt对象都有signals(信号--发送消息)和slots(槽--接收消息)。所有窗口
#
部件都是Qt对象。它们继承QWidget,而QWidget继承QObject。第一个对象 
#
“slider”发送一个信号,以 SIGNAL(valueChanged(int) 方式发送一个 
#
valueChanged(int) 信号,并且带有参数,该参数随之一起发送出去;第二个对象
#
“lcd”得到这个信号并作出响应,响应通过 SLOT(display(int)) 方式到达
#
 lcd->display(int),并传入一个参数,该参数由信号中发出的参数决定,
#
 然后执行该函数定义的功能。

        layout 
= QtGui.QVBoxLayout()
        
# 创建列方式布局
        layout.addWidget(quit);
        
# 最上面放Quit按钮
        layout.addWidget(lcd);
        
# 中间放lcd数字显示
        layout.addWidget(slider);
        
# 最下面放置滑块
        self.setLayout(layout);
        
# 显示布局


app 
= QtGui.QApplication(sys.argv)
widget 
= MyWidget()
widget.show()
sys.exit(app.exec_())

posted on 2008-06-25 21:42  屈武斌  阅读(955)  评论(0)    收藏  举报

导航