#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' PyQt4 conversion of Qt Tutorial 6 This example shows how to encapsulate two widgets into a new component and how easy it is to use many widgets. The custom widget (LCDRange) is used as a child widget. Behaviour: move a slider to change the related number display. Note: example uses 'nested' layouts to create the GUI last modified: 2012-01-19 jg ref: http://doc.trolltech.com/3.3/tutorial1-06.html ''' import sys from PyQt4.QtGui import (QApplication, QWidget, QPushButton, QFont, QVBoxLayout, QSlider, QLCDNumber, QGridLayout) from PyQt4.QtCore import (Qt) class LCDRange(QWidget): ''' A two digit QLCDNumber and QSlider widget. ''' def __init__(self, parent=None): super(LCDRange, self).__init__(parent) lcd = QLCDNumber(2, self); slider = QSlider(Qt.Horizontal, self); slider.setRange(0, 99); slider.setValue(0); slider.valueChanged.connect(lcd.display) layout = QVBoxLayout() layout.addWidget(lcd) layout.addWidget(slider) self.setLayout(layout) class MyWidget(QWidget): def __init__(self, parent=None, name=''): super(MyWidget, self).__init__(parent) if name: self.setObjectName(name) quitBtn = QPushButton('Quit', self) quitBtn.setFont(QFont("Times", 18, QFont.Bold)) quitBtn.clicked.connect(QApplication.instance().quit) grid = QGridLayout() for r in range(4): for c in range(4): grid.addWidget(LCDRange(self), r, c) # nesting layouts vbox = QVBoxLayout() vbox.addLayout(grid) vbox.addWidget(quitBtn) self.setLayout(vbox) def main(): app = QApplication(sys.argv) # required w = MyWidget(name='bldBlocks') w.show() sys.exit(app.exec_()) # start main event loop, exit when app closed if __name__ == '__main__': main()
Sunday, January 22, 2012
Qt Tutorial #1-6 Building Blocks Galore
This is from Qt Tutorial #1-6 Building Blocks Galore
Labels:
Qt Tutorial 1