[python] PyQt a vybraný widget v QDialogu

Petr Vaněk petr na scribus.info
Pátek Říjen 30 07:16:05 CET 2009


Dne pátek 30 Říjen 2009 03:11:07 Martin Stiborský napsal(a):
> Dobrý den přeji.
> Potřeboval bych poradit prosím.
> V programu používám QDialog k vytvoření nabídky, kde si uživatel
> vybere jeden z několika spinboxů a program se podle toho dál chová.
> Zasekl jsem se na způsobu, jak z QDialogu předat informaci který
> spinbox byl vybrán. Momentálně jsem to vymyslel tak, že se v cyklu
> projdou všechny spinboxy a najde se ten, který je vybrán, připadá mi
> to trochu těžkopádné. PyKDE obsahuje widget QButtonGroup, který má
> signál changed(int) nebo clicked(int) a ten vrací číselný index
> widgetu, na který se kliklo, to je paráda, akorát neumím propojit
> jmenný prostor dialogu a aplikace, aby se ti dva dorozuměli.

QButtonGroup je součástí standardního Qt GUI modulu.

Stejně ale budeš muset ty checkboxy projet všechny, ať už je budeš přidávat do 
buttonGroup anebo při validaci dialogu zjišťovat, který je aktivní.

Nebo můžeš použít třeba tohle:
for i in dialog.findChildren("QCheckBox"):
    if (i.isChecked()):
        foo(i)

atd.

prostě se toho neboj ;)

> 
> Sepsal jsem to do kódu ..
> 
> # -*- coding: utf-8 -*-
> 
> from PyQt4 import QtCore
> from PyQt4 import QtGui
> 
> import sys
> 
> from main import Ui_MainWindow
> from dialog import Ui_Dialog
> 
> class Okynko(QtGui.QMainWindow):
>   def __init__(self):
>     QtGui.QMainWindow.__init__(self)
>     self.ui = Ui_MainWindow()
>     self.ui.setupUi(self)
> 
>   @QtCore.pyqtSlot()
>   def otevriDialog(self):
>     dialog = QtGui.QDialog()
>     dialogUi = Ui_Dialog()
>     dialogUi.setupUi(dialog)
> 
>     return dialog.exec_()
> 
> def main():
>   app = QtGui.QApplication(sys.argv)
>   window = Okynko()
>   window.show()
>   sys.exit(app.exec_())
> 
> if __name__ == "__main__":
>   main()
> 
> Definice grafiky, jak mi ji vyplivlo pyuic z ui souboru Qt Designeru je
>  zde: okýnko aplikace s čudlikem: http://www.clipboard.cz/87g
> dialog s pár spinboxy: http://www.clipboard.cz/97g
> 
> Bohatě by mi stačilo popostrčit teorií, moc dík za pomoc.
> 


Další informace o konferenci Python