Schatz, das verdammte Ding klemmt!
Verfasst: Freitag 3. April 2015, 19:40
Hallo Leute,
entschuldigt, dass ich keinen zutreffenden Betreff gefunden habe. Jedoch weiß ich nicht, wie ich das Problem beim Namen nennen soll. Dazu gibt es ein Bild (http://www.bilder-upload.eu/show.php?fi ... 085686.jpg). Auf dem Bild habe ich drei rote Pfeile an entsprechenden Stellen markiert. Im Bild sehen wir, dass es sich hierbei um das Such-Fenster handelt, welches maximiert geöffnet wurde. Das mdiArea hat die Option (DontMaximizeSubWindowOnActivation). Dieses Phänomen auf dem Bild tritt erst auf, wenn ich zweimal das gleiche Fenster öffne, und sie dann über die eigene Schließ-Schaltfläche schließe. Damit wir nicht raten müssen, folgen einige Quelltext-Ausschnitte:
Modul: mdi.py
Wir sehen hier zwei definierte Funktionen. Beim Erstellen des Such-Fenster (create_search_form) übergebe ich der Search_Window-Klasse ein paar Parameter/Argumente - einmal subwindow_search und dann den Funktionsnamen close_sub_form. Warum? Hier ein kleiner Blick in die Search_Window-Klasse.
Modul: ui_pp_search.py
Die Signal/Slots habe ich im Search-Window direkt über QT-Designer bearbeitet, also den "Schließ-Knopf". Deswegen greife ich auch hierbei auf das closeEvent-Ereignis zu. Im Attribut (close_function) ist der Name der Schließ-Funktion gespeichert. Diese Funktion findet man auf meiner mdi-form. Und im Attribut sub_widget_name wird der Name der Form gespeichert. Und beim Schließen des Fensters werden diese Parameter wieder an die mdi-Form zurückgegeben, und das Fenster schließt sich. Auf diesem Weg wollte ich verhindern, dass ich nicht für jedes Unterfenster eine Schließ-Funktion schreiben muss, sondern alles zentral über eine Funktion gesteuert werden soll - hierbei wollte ich die Redundanz vermeiden.
Ich habe auch mit der subWindowList-Methode nachgesehen, ob sich die Unterfenster tatsächlich noch im MDI-Bereich befinden, nachdem ich das Suchfenster geschlossen habe. Aber es sind keine weiteren Unterfenster vorhanden - alles leer. Das heißt also, dass meine Fenster allesamt richtig geschlossen und vernichtet werden.
Aber wieso klemmt denn der obere Balken?
entschuldigt, dass ich keinen zutreffenden Betreff gefunden habe. Jedoch weiß ich nicht, wie ich das Problem beim Namen nennen soll. Dazu gibt es ein Bild (http://www.bilder-upload.eu/show.php?fi ... 085686.jpg). Auf dem Bild habe ich drei rote Pfeile an entsprechenden Stellen markiert. Im Bild sehen wir, dass es sich hierbei um das Such-Fenster handelt, welches maximiert geöffnet wurde. Das mdiArea hat die Option (DontMaximizeSubWindowOnActivation). Dieses Phänomen auf dem Bild tritt erst auf, wenn ich zweimal das gleiche Fenster öffne, und sie dann über die eigene Schließ-Schaltfläche schließe. Damit wir nicht raten müssen, folgen einige Quelltext-Ausschnitte:
Modul: mdi.py
Code: Alles auswählen
def create_search_form(self):
from ..modules_ui.ui_pp_search import Search_Window
self.subwindow_search = QMdiSubWindow()
self.search_form = Search_Window(self.close_sub_form, self.subwindow_search, self)
self.search_form.setAttribute(Qt.WA_DeleteOnClose)
self.subwindow_search.setWidget(self.search_form)
self.mdiArea.addSubWindow(self.subwindow_search)
self.search_form.showMaximized()
def close_sub_form(self, form_name):
self.mdiArea.removeSubWindow(form_name)
print FILE_NAME + ": Function (close_sub_form) was called"
Modul: ui_pp_search.py
Code: Alles auswählen
class Search_Window(QWidget):
def __init__(self, close_sub_form, sub_form, parent):
QWidget.__init__(self, parent)
self.close_function = close_sub_form # this function is in module named mdi.py
self.sub_widget_name = sub_form
def closeEvent(self, event):
self.close_function(self.sub_widget_name)
Ich habe auch mit der subWindowList-Methode nachgesehen, ob sich die Unterfenster tatsächlich noch im MDI-Bereich befinden, nachdem ich das Suchfenster geschlossen habe. Aber es sind keine weiteren Unterfenster vorhanden - alles leer. Das heißt also, dass meine Fenster allesamt richtig geschlossen und vernichtet werden.
Aber wieso klemmt denn der obere Balken?