1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#!/usr/bin/env python
"""PyQt4 port of the layouts/basiclayout example from Qt v4.x"""
import sys
from PyQt4 import QtCore, QtGui
class Dialog(QtGui.QDialog):
NumGridRows = 3
NumButtons = 4
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.buttons = []
self.labels = []
self.lineEdits = []
self.createMenu()
self.createHorizontalGroupBox()
self.createGridGroupBox()
self.bigEditor = QtGui.QTextEdit()
self.bigEditor.setPlainText(self.tr("This widget takes up all the remaining "
"space in the top-level layout."))
self.okButton = QtGui.QPushButton(self.tr("OK"))
self.cancelButton = QtGui.QPushButton(self.tr("Cancel"))
self.okButton.setDefault(True)
self.connect(self.okButton, QtCore.SIGNAL("clicked()"),
self, QtCore.SLOT("accept()"))
self.connect(self.cancelButton, QtCore.SIGNAL("clicked()"),
self, QtCore.SLOT("reject()"))
buttonLayout = QtGui.QHBoxLayout()
buttonLayout.addStretch(1)
buttonLayout.addWidget(self.okButton)
buttonLayout.addWidget(self.cancelButton)
mainLayout = QtGui.QVBoxLayout()
mainLayout.setMenuBar(self.menuBar)
mainLayout.addWidget(self.horizontalGroupBox)
mainLayout.addWidget(self.gridGroupBox)
mainLayout.addWidget(self.bigEditor)
mainLayout.addLayout(buttonLayout)
self.setLayout(mainLayout)
self.setWindowTitle(self.tr("Basic Layouts"))
def createMenu(self):
self.menuBar = QtGui.QMenuBar()
self.fileMenu = QtGui.QMenu(self.tr("&File"), self)
self.exitAction = self.fileMenu.addAction(self.tr("E&xit"))
self.menuBar.addMenu(self.fileMenu)
self.connect(self.exitAction, QtCore.SIGNAL("triggered()"),
self, QtCore.SLOT("accept()"))
def createHorizontalGroupBox(self):
self.horizontalGroupBox = QtGui.QGroupBox(self.tr("Horizontal layout"))
layout = QtGui.QHBoxLayout()
for i in range(Dialog.NumButtons):
self.buttons.append(QtGui.QPushButton(self.tr("Button %1").arg(i + 1)))
layout.addWidget(self.buttons[i])
self.horizontalGroupBox.setLayout(layout)
def createGridGroupBox(self):
self.gridGroupBox = QtGui.QGroupBox(self.tr("Grid layout"))
layout = QtGui.QGridLayout()
for i in range(Dialog.NumGridRows):
self.labels.append(QtGui.QLabel(self.tr("Line %1:").arg(i + 1)))
self.lineEdits.append(QtGui.QLineEdit())
layout.addWidget(self.labels[i], i, 0)
layout.addWidget(self.lineEdits[i], i, 1)
self.smallEditor = QtGui.QTextEdit()
self.smallEditor.setPlainText(self.tr("This widget takes up about two "
"thirds of the grid layout."))
layout.addWidget(self.smallEditor, 0, 2, 3, 1)
layout.setColumnStretch(1, 10)
layout.setColumnStretch(2, 20)
self.gridGroupBox.setLayout(layout)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
dialog = Dialog()
sys.exit(dialog.exec_())
|