Portál AbcLinuxu, 13. května 2025 02:51

Dotaz: Pyqt4 otevřený dialog není vynesen "nahoru"

20.6.2014 10:33 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Pyqt4 otevřený dialog není vynesen "nahoru"
Přečteno: 227×
Odpovědět | Admin
Zdravím všechny

Během psaní a zkoušení mého "programu" jsem narazil na podivné chování GUI.

z hlavního okna přes nabídku otevřu formulář. Ja na něm mimo jiné tlačítko pro další nastavení, které nejprve vyvolá dialog na zadání hesla, po jeho převzetí je tento dialog uzavřen a po kontrole hesla otevřen další formulář s možností navolit ty dodatečné parametry k hlavnímu formuláři.

Zatím vše funguje jak má, ale dost často se tento doplňkový formulář otevře pod tím hlavním, tudíž neni vidět. zkoušel jsem použít před show() raise_(), jak jsem někde vyčetl, ale nepomáhá to.

Můj postup : po kontrole hesla volám :
def get_luks_params(self ) :
  try :
    import luks
    self.luks_ui = luks.luks_form( self )
  except Exception,  err :
    print sys.exc_info()[0]
    print traceback.format_exc()
    print err
    print "deleting - luks - emergency"
    del sys.modules[ 'luks' ]
    return
  self.luks_ui.get_params( self.luks_params )
funkce self.luks_ui.get_params vypadá následovně :
def get_params(self,  callback ):
  self.ui.close = callback
  self.setup_ui( ) # nějaké nastavení signálů
  self.ui.raise_()
  self.ui.show( )
Tak nějak nevím, zda to je napsané dobře. Každopádně se mi nepovedlo přenést ten podformulář do popředí (on tam občas vyskočí, ale ne pokaždé)

jo, píšu to v Pythonu 2.7 a PyQT4

předem díky za pomoc

Milan

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.6.2014 10:51 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Pyqt4 otevřený dialog není vynesen "nahoru"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě mně napadlo, že vzhledem k velikosti obou oken by šlo s tím následným cuknout do strany, aby ho bylo aspoň trochu vidět
Petr Bravenec avatar 20.6.2014 13:06 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: Pyqt4 otevřený dialog není vynesen "nahoru"
Qt::WindowFlags flg = windowFlags();
flg |=  Qt::WindowStaysOnTopHint;
setWindowFlags(flg);
show();
Petr Bravenec - Hobrasoft s.r.o.
23.6.2014 08:08 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Pyqt4 otevřený dialog není vynesen "nahoru"
Jo, tohle funguje ... děkuji

Jen mi to přijde trochu drsné. Nerozumím tomu, proč winmanager to okno při otevření nehodí nahoru automaticky (možná nějaká vlastnost "zabránění převzetí fokusu" ? ), to _raise() taky nepomáhá, takže dáme knockout WindowStaysOnTopHint.

ještě jednou díky za radu

Milan

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.