Hallo Liebe Community,
ich habe ein Problem und komme leider nicht mehr weiter.
Sagen wir, ich habe class A und class B.
class A öffnet beim laden ein Fenster bzw. erstellt es auch.
Mit class B möchte ich class A aufrufen, was auch super funktioniert.
Nur will ich, wenn ich ein zweitesmal class A aufrufe, dass es dann logischerweise 2 Fenster sind
Wie kann ich eine class mehrmals laden?
Eine class mehrmals laden
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Dazu solltest du uns deinen Code zeigen.
Denn, Mal angenommen du erzeugst das Fenster mit einem Button, dann schreibst du eine Funktion, die beim Klicken jedes Mal die Klasse erzeugt.
Z.B. so:
Sprich, du erzeugst die Instanz nicht bei der Initialisierung der Klasse B, sondern erzeugst sie immer wieder beim Klick.
Denn, Mal angenommen du erzeugst das Fenster mit einem Button, dann schreibst du eine Funktion, die beim Klicken jedes Mal die Klasse erzeugt.
Z.B. so:
Code: Alles auswählen
def openWindow():
window = WindowClass()
window.show()
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Cesar: Was bedeutet für Dich das ”laden” einer Klasse? Module kann man laden, Klassen nicht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Wenn ich das tuexXSkyWalkerXx1 hat geschrieben: Mittwoch 18. März 2020, 14:31 Dazu solltest du uns deinen Code zeigen.
Denn, Mal angenommen du erzeugst das Fenster mit einem Button, dann schreibst du eine Funktion, die beim Klicken jedes Mal die Klasse erzeugt.
Z.B. so:Sprich, du erzeugst die Instanz nicht bei der Initialisierung der Klasse B, sondern erzeugst sie immer wieder beim Klick.Code: Alles auswählen
def openWindow(): window = WindowClass() window.show()
Code: Alles auswählen
## Show attacker->szString to Player
def ShowPlayer(self, szString, szName, iJob, iSex):
chat.AppendChat(chat.CHAT_TYPE_INFO, "DEBUG: ShowPlayer")
self.iNumber += 1
hwnd = DynastyDuellText(szName, szString, 5.0, iJob, iSex, (self.iNumber * 10))
# self.hwnd = None
Code: Alles auswählen
## Sidebar Screen
class DynastyDuellText(ui.ScriptWindow):
def __del__(self):
ui.ScriptWindow.__del__(self)
def __init__(self, szName, szString, iDuration, iJob, iSex, iY):
ui.ScriptWindow.__init__(self)
self.szName = szName
self.szString = szString
self.iDuration = iDuration
self.iJob = iJob
self.iSex = iSex
self.iY = iY
self.__LoadWindow()
self.configureChilds(szName, szString, iJob, iSex)
self.Show()
self.SetTop()
self.WarteSchleife = WaitingDialog()
self.WarteSchleife.Open(iDuration)
self.WarteSchleife.SAFE_SetTimeOverEvent(self.Close)
Dann passiert nichts, bzw. nach dem Buttonklick. Es kommen auch keine Errors.
Also ich will sozusagen zwei Instanzen haben.
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Cesar: Ähm, `hwnd` und „hungarian notation“? Sorry aber bitte programmiere Python und nicht VisualBasic in den 1990ern. Davon abgesehen das man auch in C und C++ das mit den Typpräfixen nicht mehr macht ist `sz` ja beispielsweise auch *falsch*. Ebenso `hwnd`. Wenn man `window` meint, sollte man das auch schreiben. ”Handles”, also opaque Zahlen die für irgend ein Objekt stehen gibt es in Python auch nicht.
Namen schreibt man in Python klein_mit_unterstrichen und ohne irgendwelche kryptischen Typpräfixe. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Vergiss ganz schnell das es `__del__()` gibt. Das macht nicht das was Du denkst und kann alleine durch die Existenz zu Speicherlecks führen. Und die hier gezeigte Implementierung macht noch nicht mal etwas sinnvolles, denn die ruft nur die gleiche Methode auf der Basisklasse auf – etwas was ganz automatisch der Fall wäre wenn man die Methode gar nicht implementiert hätte.
Doppelte führende Unterstriche bedeuten nicht „private“. Für nichtöffentliche Attribute verwendet man *einen* führenden Unterstrich.
Mehrzahl von „child“ ist „children“.
Aus dem gezeigten Code wird mir immer noch nicht klar was das Problem ist. Welches GUI-Rahmenwerk verwendest Du überhaupt?
Namen schreibt man in Python klein_mit_unterstrichen und ohne irgendwelche kryptischen Typpräfixe. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Vergiss ganz schnell das es `__del__()` gibt. Das macht nicht das was Du denkst und kann alleine durch die Existenz zu Speicherlecks führen. Und die hier gezeigte Implementierung macht noch nicht mal etwas sinnvolles, denn die ruft nur die gleiche Methode auf der Basisklasse auf – etwas was ganz automatisch der Fall wäre wenn man die Methode gar nicht implementiert hätte.
Doppelte führende Unterstriche bedeuten nicht „private“. Für nichtöffentliche Attribute verwendet man *einen* führenden Unterstrich.
Mehrzahl von „child“ ist „children“.
Aus dem gezeigten Code wird mir immer noch nicht klar was das Problem ist. Welches GUI-Rahmenwerk verwendest Du überhaupt?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari