PyQt: Tutorial per iniziare

qttutorial

Ritorna alla pagina <-- Modifica precedente | Modifica successiva -->

Sommario diffierenze
Titolo PyQt: Tutorial per iniziare (WORK IN PROGRESS) PyQt: Tutorial per iniziare (WORK IN PROGRESS)
Data 2009-10-10 16:57:58 2009-10-10 17:39:41
Autore shainer shainer
Tags

2009-10-10 16:57:58 di shainer
2009-10-10 17:39:41 di shainer
208Se invece vogliamo inserire un altro layout, al su208Se invece vogliamo inserire un altro layout, al su
>o posto si usa *addLayout()*.::>o posto si usa *addLayout()*.::
209209
210                cWidget.setLayout(hBox)210                cWidget.setLayout(hBox)
211211
212La hbox è il layout principale (quello che prima h212La hbox è il layout principale (quello che prima h
>o definito “genitore”) e quindi va impostato come >o definito “genitore”) e quindi va impostato come 
>centrale con questa chiamata.>centrale con questa chiamata.
n213Le box sono comode quando si tratta di inserire inn213Le box sono comode quando si tratta di inserire in
> fila pochi widget, ma per grafiche complesse è co> fila pochi widget, ma per grafiche complesse è co
>nsigliabile usare le grid, o tabelle. Vediamo un e>nsigliabile usare le grid, o tabelle. Vediamo un e
>sempio di utilizzo:>sempio di utilizzo:::
214214
tt215  #!/usr/bin/python
216
217  import sys
218  from PyQt4 import QtGui, QtCore
219
220  class MainWindow(QtGui.QMainWindow):
221        def __init__(self):
222                QtGui.QMainWindow.__init__(self)
223
224                self.resize(350, 250)
225                self.setWindowTitle('Grid example'
 >)
226                
227                cWidget = QtGui.QWidget(self)
228                
229                grid = QtGui.QGridLayout(cWidget) 
 ># dichiarazione della griglia
230                
231                checkBox = QtGui.QCheckBox("Normal
 > checkbox", cWidget)
232                checkBox.setChecked(True)
233                
234                triCheck = QtGui.QCheckBox("Trista
 >te checkbox", cWidget)
235                triCheck.setTristate(True)
236                triCheck.setCheckState(QtCore.Qt.P
 >artiallyChecked)
237                
238                vBox = QtGui.QVBoxLayout()
239                radio1 = QtGui.QRadioButton("Radio
 > button 1", cWidget)
240                radio2 = QtGui.QRadioButton("Radio
 > button 2", cWidget)
241                radio3 = QtGui.QRadioButton("Radio
 > button 3", cWidget)
242                radio1.setChecked(True)
243                vBox.addWidget(radio1)
244                vBox.addWidget(radio2)
245                vBox.addWidget(radio3)
246                
247                vBox2 = QtGui.QVBoxLayout()
248                toggle = QtGui.QPushButton("Toggle
 > button")
249                toggle.setCheckable(True)
250                flat = QtGui.QPushButton("Flat but
 >ton")
251                flat.setFlat(True)
252                vBox2.addWidget(toggle)
253                vBox2.addWidget(flat)
254
255                textEdit = QtGui.QTextEdit(cWidget
 >)
256                
257                grid.addWidget(triCheck, 0, 0)
258                grid.addWidget(checkBox, 0, 1)
259                grid.addLayout(vBox, 1, 0)
260                grid.addLayout(vBox2, 1, 1)
261                grid.addWidget(textEdit, 2, 0, 1, 
 >2)
262                
263                cWidget.setLayout(grid)
264                self.setCentralWidget(cWidget)
265
266  app = QtGui.QApplication(sys.argv)
267  main = MainWindow()
268  main.show()
269  sys.exit(app.exec_())
270
271.. img:: 10
272   :nolink:
273
274Per prima cosa introduciamo brevemente i widgets n
 >uovi:::
275
276                checkBox = QtGui.QCheckBox("Normal
 > checkbox", cWidget)
277                checkBox.setChecked(True)
278
279Una checkbox può avere due stati: checked o unchec
 >ked. Il cambio di stato è “catturato” dal segnale 
 >*stateChanged()*.
280Le Qt mettono a disposizione un secondo tipo di ch
 >eckbox, detto *tristate* perchè appunto possiede t
 >re stati diversi: la si può vedere nel secondo ese
 >mpio.::
281
282                radio1 = QtGui.QRadioButton("Radio
 > button 1", cWidget)
283
284A differenza delle checkbox, quando ci sono divers
 >i radio button, solo uno può essere selezionato.
285Un toggle button è definito dal metodo *setCheckab
 >le()*, mentre l'ultimo è un flat button.
286
287Torniamo però a parlare delle griglie.
288Se *addWidget()* (o il corrispondente *addLayout()
 >*) è usato per delle griglie, oltre all'oggetto da
 > aggiungere, bisogna anche specificare la posizion
 >e. La definizione completa è:
289
290*QGridLayout.addWidget (self, QWidget, int row, in
 >t column, int rowSpan, int columnSpan, Qt.Alignmen
 >t=0)*
291
292Dove *row* e *column* indicano la riga e la colonn
 >a in cui inserire il widget, *rowSpan* e *columnSp
 >an* nell'esempio sono usati solo a proposito della
 > *textEdit*: se vogliamo che essa occupi uno spazi
 >o maggiore di quello assegnato ad una singola cell
 >etta, bisogna indicare esattamente quante righe o 
 >colonne si vuole far occupare al widget. La nostra
 > *textEdit* occupa quindi una sola riga ma due col
 >onne.
293I metodi per impostare le proprietà delle griglie 
 >sono tanti, eccone alcuni:
294*setHorizontalSpacing*: imposta la distanza fra du
 >e widget orizzontali.
295*setVerticalSpacing*: imposta la distanza fra due 
 >widget verticali.
296*setSpacing*: le due precedenti, combinate.
297*setColumnMinimumWidth*: larghezza minima della co
 >lonna specificata come primo parametro.
298*setRowMinimumWidth*: stessa cosa per una riga.
299*int columnCount*: ritorna il numero di colonne de
 >lla griglia.
300*int rowCount*: ritorna il numero di righe.