pyqt4/handmade_ui/handmade_ui.py
author Yury Yurevich <the.pythy@gmail.com>
Fri May 08 00:06:24 2009 +0700 (5 weeks ago)
changeset 17 9daaa8b3e153
permissions -rw-r--r--
saex: add bootstrap for inetractive SQLAlchemy examples
     1 #!/usr/bin/env python
     2 # -*- encoding: utf-8 -*-
     3 """
     4 Example of handmade UI widget
     5 """
     6 
     7 from PyQt4 import QtCore, QtGui
     8     
     9 class HandmadeWidget(QtGui.QWidget):
    10         
    11     def __init__(self, parent=None):
    12         super(HandmadeWidget, self).__init__(parent)
    13         self.setupUi()
    14         
    15     def setupUi(self):
    16         # располагаем под-виджеты внутри нашего виджета по таблице
    17         self.layout = QtGui.QGridLayout(self)
    18         # поскольку поля ввода однотипны, то и делаем их в цикле
    19         for pos, name in enumerate(('series', 'number')):
    20             # ярлык к полю ввода
    21             label = QtGui.QLabel(self)
    22             # само поле ввода
    23             edit = QtGui.QLineEdit(self)
    24             # поставить в соответствие ярлык <-> поле ввода
    25             label.setBuddy(edit)
    26             # текст ярлыка
    27             label.setText('&%s' % name.title())
    28             # размещаем ярлык и поле ввода по ячейкам нашей вирт.таблицы
    29             self.layout.addWidget(label, pos, 0, 1, 1)
    30             self.layout.addWidget(edit, pos, 1, 1, 1)
    31             # сохраняем ярлык и поле ввода как отдельные атрибуты виджета
    32             setattr(self, '%sLabel' % name, label)
    33             setattr(self, '%sEdit' % name, edit)
    34         # кнопка
    35         self.goButton = QtGui.QPushButton(self)
    36         self.goButton.setText("Go")
    37         # для выравнивая кнопки по правому краю
    38         # помещаем ее в горизонтальный бокс
    39         # вместе с "пружиной"-spacer
    40         hbox = QtGui.QHBoxLayout()
    41         spacer = QtGui.QSpacerItem(40, 20, 
    42                                    QtGui.QSizePolicy.Expanding, 
    43                                    QtGui.QSizePolicy.Minimum)
    44         hbox.addItem(spacer)
    45         hbox.addWidget(self.goButton)
    46         # добавляем в layout горизонтальный бокс
    47         self.layout.addLayout(hbox, pos+1, 0, 1, 2)
    48 
    49 if __name__ == '__main__':
    50     import sys
    51     app = QtGui.QApplication(sys.argv)
    52     widget = HandmadeWidget()
    53     widget.show()
    54     sys.exit(app.exec_())
    55