Portál AbcLinuxu, 8. května 2024 05:10


Dotaz: (Py)Qt a práce se signály

Martin Stiborský avatar 15.3.2009 14:29 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
(Py)Qt a práce se signály
Přečteno: 273×
Odpovědět | Admin

Dobrý den. Chtěl bych požádat o radu ohledně programování v Qt. Pracuji s PyQt, ale to není důležité, spíš mi jde o princip.

Jde mi o to, že neumím namapovat signál na widget, protože se neumím "dostat" k samotnému objektu widgetu.
Totiž, mám soubor app.py, kde je třída s programem, metody a další věci.
Dále mám appGui.py, kde je popsáno GUI programu a také je tam metoda errorWindow(), která vykreslí jednoduché okýnko s QTextEdit. Toto okýnko má Button, u kterého potřebuji, aby spouštěl metodu, která je součástí app.py.
Když si v app.py vytvořím proměnnou s instancí errorWindow(), tak přímo na widget buttonu se nedostanu, signál na něj nenalepím (dělám tady chybu ?), takže si mám widget nechat najít vypsáním potomků instance okýnka, nebo jak se toto řeší ?

Díky za pomoc, snad to je aspoň trochu srozumitelné ..

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

Odpovědi

15.3.2009 18:41 spang
Rozbalit Rozbalit vše Re: (Py)Qt a práce se signály
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud se k tomu objektu potřebuješ dostat, ale rozumným způsobem to nejde, tak máš asi něco špatně navrženo. Když pošleš zdrojáky a napíšeš, kde chceš co udělat, tak bude mnohem snazší poradit.
Sjå! Den gamle Buddha-knusern!
Martin Stiborský avatar 16.3.2009 23:20 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: (Py)Qt a práce se signály

Tak už jsem se s tím nějak popral.

Dám se zdrojáky řešení kterého jsem potřeboval dosáhnout. Je to samozřejmě úplně jednoduché, stačilo si pořádně uvědomit teorii a pořádně na to kouknout ..

Soubor app.py

#-*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui
from app_gui import AppGui
import sys

class App:
	
	def __init__(self):
		self.ui = MyAppGui(None)
		QtCore.QObject.connect(self.ui.cudlik, QtCore.SIGNAL("clicked()"), self.ui.cudlikZmacknut)

class MyAppGui(AppGui):

	def __init__(self, parent):
		AppGui.__init__(self, parent)

	def cudlikZmacknut(self):
		QtGui.QMessageBox.information(self,
						"Stibi si hraje!",
						"Zmacknul jsi cudlik kamo!",
						QtGui.QMessageBox.Ok)

if __name__ == "__main__":
	app = QtGui.QApplication(sys.argv)
	mainWindow = App()
	mainWindow.ui.show()
	app.exec_()
Soubor app_gui.py
from PyQt4 import QtCore, QtGui

class AppGui(QtGui.QMainWindow):
	def __init__(self, parent = None):
		QtGui.QMainWindow.__init__(self, parent)
		self.setWindowTitle("Test")

		self.udelejCudlik()

	def udelejCudlik(self):
		self.cudlik = QtGui.QPushButton("Zmackni me!", self)

Kvík ..

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.