Portál AbcLinuxu, 29. října 2025 23:42
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.