Portál AbcLinuxu, 8. května 2024 05:10
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é ..
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)
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.