beim Klick auf den "Beenden" Button soll die Funktion CloseMe aufgerufenund anschließend durchgeführt werden. In dieser Funktion wird gesagt, dass das Fenster geschlossen werden soll. Aber beim Anklicken des Buttons gehen nur die Widgets weg, aber das Fenster bleibt immer noch bestehen. Übersehe ich da etwas? Meine Vermutung ist also, weil die Widgets ins Layout gepackt wurden, ist es nicht mehr so einfach das Fenster ohne weiteres zu schließen, sondern, müsste die Widgets vorher aus dem Layout holen, und dann das Fenster schließen?
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import QWidget, QApplication, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QDialog
from PyQt4.QtCore import Qt
class my_window(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
SprachWahl = "German"
if SprachWahl == "German":
from Language.German import Language
if SprachWahl == "English":
from Language.English import Language
self.Chosen_Language = Language() # Die Klasse "Language" in die Klasse "my_window" einbinden
self.setWindowTitle(self.Chosen_Language.Dict_TestDialog["Title"])
#Layout festlegen
self.setLayout(QVBoxLayout())
#Eingabe Widget mit Text erstellen
pHBox = QHBoxLayout()
self.LLabel = QLabel(self.Chosen_Language.Dict_TestDialog["Label1"])
self.LEMsg = QLineEdit()
#Ins Layout packen und Layout ins Widget packen
pHBox.addWidget(self.LLabel)
pHBox.addWidget(self.LEMsg)
self.layout().addLayout(pHBox)
#2 Buttons hinzufuegen
pHBox = QHBoxLayout()
self.BShow = QPushButton(self.Chosen_Language.Dict_TestDialog["cmd_Ok"])
self.BClose = QPushButton(self.Chosen_Language.Dict_TestDialog["cmd_Beenden"])
#Ins Layout packen
pHBox.addWidget(self.BShow)
pHBox.addWidget(self.BClose)
self.layout().addLayout(pHBox)
#Zeigen Button bei Klick showMessage aufrufen lassen, Signal und Slot
#verbinden
self.BShow.clicked.connect(self.showMessage)
#Beim Klick auf Beenden Button schliessen, Signal und Slot verbinden
self.BClose.clicked.connect(self.CloseMe)
#Funktion, welche eine Nachricht anzeigt
def showMessage(self):
#Nachricht aus dem LineEdit holen
print self.LEMsg.text()
def CloseMe(self):
print "Xarphus wurde soeben erfolgreich beendet."
self.close()
[...]