Standardproblem: "externe" Variable bearbeiten
Verfasst: Donnerstag 25. November 2004, 12:49
Hallo,
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:
childwindow.py:
Das Hochzählen im Childwindow funktioniert nicht, die Variable ist unbekannt. Oder ist das Parentwindow/Childwindow-Konstrukt falsch? Wer weiß wie's geht?, danke im voraus.
max
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