@feldmann_markus: Ich habe doch gesagt was Du falsch gemacht hast, Du hast OOP nicht so ganz verstanden.
Wobei der Unterschied zwischen Funktion übergeben oder Funktion aufrufen und Rückgabewert übergeben in C++ genau der gleiche ist. Sogar syntaktisch.
Projekt Meisterhilfe
Stimmt. War ein grober Fehler von mir.BlackJack hat geschrieben:@feldmann_markus: Deine letzte Zeile 17 ist ja noch "fälscher". Jetzt rufst Du die Methode nicht nur auf, sonder gibst ihr auch noch ein Argument mit, dass sie gar nicht erwartet.
Aber was ich nicht verstehe ist warum ich folgendes schreiben darf,
Code: Alles auswählen
self.connect(self.workspace, SIGNAL("clicked()"),
self.updateMenus)
Code: Alles auswählen
self.connect(self.workspace, SIGNAL("clicked()"),
self.updateMenus())
Und das "None" übergeben wird, wird wohl eher nur in Python der Fall sein, denke ich?!
Werde es mir fürs nächste mal merken.
Im zweiten Fall wird die Methode *aufgerufen* und `None` wird nicht übergeben, sondern von der Methode zurückgegeben.
VerstandenBlackJack hat geschrieben:Im zweiten Fall wird die Methode *aufgerufen* und `None` wird nicht übergeben, sondern von der Methode zurückgegeben.
Und im ersten Fall nicht? Da werde ich nochmal im Python Buch nachlesen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Da wird nur die Referenz übergeben. Kannst du auch ganz einfach im Interpreter ausprobieren, tippe einfach mal ``print list`` und ``print list()`` ein.feldmann_markus hat geschrieben:Und im ersten Fall nicht? Da werde ich nochmal im Python Buch nachlesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich habe mein Programm mittels einer Beispiel Vorlage ein wenig voran gekurbelt.
Mein Hauptfenster ist eine MDI Anwendung, in denen Unterfenster erscheinen können. Nun wollte ich das man diese Unterfenster immer nur einmal erscheinen lassen kann. Ich erstelle also ein Unterfenster Reisehelfer der über die selbst erstellte Action reisehelferAct angestoßen wird.
und hier die Methode zum erstellen des Fensters,
Irgendwie funktioniert das nicht. Hat Jemand ne Idee?
Mein Hauptfenster ist eine MDI Anwendung, in denen Unterfenster erscheinen können. Nun wollte ich das man diese Unterfenster immer nur einmal erscheinen lassen kann. Ich erstelle also ein Unterfenster Reisehelfer der über die selbst erstellte Action reisehelferAct angestoßen wird.
Code: Alles auswählen
...
self.reisehelferAct = QtGui.QAction(QtGui.QIcon(":/images/cut.png"),
self.tr("&Reiserhelfer"), self)
self.reisehelferAct.setShortcut(self.tr("Ctrl+Alt+R"))
self.reisehelferAct.setStatusTip(self.tr("Startet das Reisehelfer Modul."))
self.connect(self.reisehelferAct, QtCore.SIGNAL("triggered()"), self.createReisehelfer)
...
Code: Alles auswählen
def createReisehelfer(self):
ReiseHelferFenster = ReiseHelfer()
if not ReiseHelferFenster.isVisible:
self.workspace.addWindow(ReiseHelferFenster)
ReiseHelferFenster.show()
else:
pass
Ich weiss, dass ich das Objekt zu fassen bekommen muß, was in meiner Methode oben nicht der Fall ist. Nur wie schaffe ich das ?feldmann_markus hat geschrieben: Irgendwie funktioniert das nicht. Hat Jemand ne Idee?
Gibt es eine Funktion, mit der ich überprüfen kann ob es ein Objekt mit dem Fenster Titel "Reisehelfer" gibt, welches zur workspace gehört?
Habe nun eine Methode erstellt mit der ich das fast kann,feldmann_markus hat geschrieben: Gibt es eine Funktion, mit der ich überprüfen kann ob es ein Objekt mit dem Fenster Titel "Reisehelfer" gibt, welches zur workspace gehört?
Code: Alles auswählen
def existUnterfenster(self,Title):
for window in self.workspace.windowList():
print window.windowTitle
if Title == window.windowTitle:
return True
else:
pass
return False
Code: Alles auswählen
def createReisehelfer(self):
ReiseHelferFenster = ReiseHelfer()
# Wenn das Fenster schon existiert darf es nicht nochmal
# erzeugt werden.
if not self.existUnterfenster("Reisehelfer"):
self.workspace.addWindow(ReiseHelferFenster)
ReiseHelferFenster.show()
else:
pass
In meiner Konsole spuckt er nur aus,
- <built-in method windowTitle of ReiseHelfer object at 0xb7bbf6ac>
Nun funktioniert es,feldmann_markus hat geschrieben: Gibt es eine Funktion, mit der ich überprüfen kann ob es ein Objekt mit dem Fenster Titel "Reisehelfer" gibt, welches zur workspace gehört?
Code: Alles auswählen
def createReisehelfer(self):
ReiseHelferFenster = ReiseHelfer()
# Wenn das Fenster schon existiert darf es nicht nochmal
# erzeugt werden.
if not self.existUnterfenster("Reisehelfer"):
self.workspace.addWindow(ReiseHelferFenster)
ReiseHelferFenster.show()
else:
pass
def existUnterfenster(self,Title):
for window in self.workspace.windowList():
print window.windowTitle()
if Title == window.windowTitle():
return True
else:
pass
return False
Neues Problem.
Ich bin dabei mit der QSettings rum zu spielen, also das speichern der Fenster Einstellungen.
Bei meinem Hauptfenster(Mdi) klappt das, allerdings nicht bei meinem Unterfenster(Mdi Child).
Gibt es eine Gesamtübersicht aller Signale?
Ich will dass das Unterfenster beim schliessen seine Größe und Position speichert über QSettings genau wie beim Hauptfenster.
Was mache ich falsch?
Kann mir einer erklären, was Zeile 23 und 24 in hauptfenster.py bewirken?
Hier ein Ausschnitt meiner aktuellen Sourcen,
Hauptfenster,
und Unterfenster,
Ich bin dabei mit der QSettings rum zu spielen, also das speichern der Fenster Einstellungen.
Bei meinem Hauptfenster(Mdi) klappt das, allerdings nicht bei meinem Unterfenster(Mdi Child).
Gibt es eine Gesamtübersicht aller Signale?
Ich will dass das Unterfenster beim schliessen seine Größe und Position speichert über QSettings genau wie beim Hauptfenster.
Was mache ich falsch?
Kann mir einer erklären, was Zeile 23 und 24 in hauptfenster.py bewirken?
Hier ein Ausschnitt meiner aktuellen Sourcen,
Hauptfenster,
Code: Alles auswählen
#!/usr/bin/env python
#
#hauptfenster.py
#
import sys
from PyQt4 import QtCore, QtGui
from reisehelfer import *
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.workspace = QtGui.QWorkspace()
self.setCentralWidget(self.workspace)
self.connect(self.workspace, QtCore.SIGNAL("windowActivated(QWidget *)"),
self.updateMenus)
self.windowMapper = QtCore.QSignalMapper(self)
self.connect(self.windowMapper, QtCore.SIGNAL("mapped(QWidget *)"),
self.workspace, QtCore.SLOT("setActiveWindow(QWidget *)"))
self.createActions()
self.createMenus()
self.createStatusBar()
self.updateMenus()
self.readSettings()
self.setWindowTitle(self.tr("DSA 4 Meisterhilfe"))
...
Code: Alles auswählen
#!/usr/bin/env python
#
#reisehelfer.py
#
import sys
from PyQt4 import QtCore, QtGui
class ReiseHelfer(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.connect(self, QtCore.SIGNAL("close(QWidget *)"), self.writeSettings)
self.setWindowTitle(self.tr("Reisehelfer"))
self.readSettings()
...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie wäre es, wenn du statt jedes deiner Probleme hier anzuhängen du einen neuen Thread aufmachen würdest, dass auch andere unter Umständen davon profitieren könnten? Ein Thread pro Problem ist durchaus erwünscht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice