ich möchte mit PyQt eine Variable auch durch ein Unterfenster bearbeiten können. Muss ich dazu das Unterfenster extra von der Qt-Klasse ableiten und eine Referenz auf die Variable in def __init__() übergeben oder gibt es einen einfachen Export-Mechanismus? Kleines Beispiel:
parentwindow.py:
Code: Alles auswählen
import sys
from qt import *
from childwindow import ChildWindow
class ParentWindow(QMainWindow):
def __init__(self,parent = None,name = None,fl = 0):
QMainWindow.__init__(self,parent,name,fl)
self.setCaption("parent")
if not name:
self.setName("parent")
self.setCentralWidget(QWidget(self,"qt_central_widget"))
self.startChildButton= QPushButton(self.centralWidget(),"startChildbutton")
self.startChildButton.setText("start child")
self.startChildButton.setGeometry(QRect(350,60,151,41))
self.parentIncreaseButton = QPushButton(self.centralWidget(),"parentIncreaseButton")
self.parentIncreaseButton.setText("increase")
self.parentIncreaseButton.setGeometry(QRect(80,60,151,41))
self.resize(QSize(600,179).expandedTo(self.minimumSizeHint()))
self.connect(self.parentIncreaseButton,SIGNAL("released()"),self.parentIncrease)
self.connect(self.startChildButton,SIGNAL("released()"),self.startChildWindow)
def parentIncrease(self):
global counter
counter += 1
print"parentIncrease(): counter is ", counter
def startChildWindow(self):
cw = ChildWindow()
cw.show()
cw.exec_loop()
if __name__ == "__main__":
counter = 0
app = QApplication(sys.argv)
QObject.connect(app,SIGNAL("lastWindowClosed()"),app,SLOT("quit()"))
pw = ParentWindow()
app.setMainWidget(pw)
pw.show()
app.exec_loop()
Code: Alles auswählen
from qt import *
class ChildWindow(QWidget):
def __init__(self,parent = None,name = None,fl = 0):
QWidget.__init__(self,parent,name,fl)
self.setCaption("child")
if not name:
self.setName("childwindow")
self.childIncreaseButton = QPushButton(self,"childIncreaseButton")
self.childIncreaseButton.setText("increase")
self.childIncreaseButton.setGeometry(QRect(220,80,151,41))
self.resize(QSize(600,179).expandedTo(self.minimumSizeHint()))
self.connect(self.childIncreaseButton,SIGNAL("released()"),self.childIncrease)
def childIncrease(self):
global counter # bleibt unbekannt :-(
counter += 1
print"childIncrease(): counter is ", counter
max