Hallo,
damit es nicht zu sehr abstrakt wird, erstelle ich meinen verkürzten Code da. Ich zeuge es euch erstmal mit dem Beispiel der Menuleiste. Da ich mit meiner ToolBar so ähnlich verfahre, denke ich, brauche ich das nicht nochmal extra zu demonstrieren. Wie ihr seht, werde ich im Modul MDIForm_Menue.py abfragen, welche Sprache der Benutzer eingestellt hat, indem ich die Werte aus der INI-Datei lade. Das Laden der Werte aus der INI-Datei werde ich mit einem weiteren Modul machen (Config.py). In dieses Modul werde ich alle Einstellungen aus der INI-Datei in die Dictionary des Moduls Config.py laden. Und dieses Modul werde ich auch einbinden, und abfragen, welche Sprache nun verwendet wird. Und in meinem Fall habe ich keine andere Idee, außer die Importe der Module innerhalb der Klasse zu verorten.
MDIForm.py (Mein Hauptfenster)
Code: Alles auswählen
import sys
from PyQt4.QtGui import QMainWindow, QApplication, QAction, QMenuBar, QToolBar, QIcon, QMdiArea, QScrollBar
from PyQt4.QtCore import SIGNAL, SLOT, Qt
from MDIForm_Menue import MainWindow_MenuBar
from MDIForm_ToolBar import ToolBar_Manage, ToolBar_Close
from Info import Information
class MDIFormular(QMainWindow):
# Vererbung aktivieren, angeben, dass es keine Elternform hat
def __init__ (self, parent=None):
QMainWindow.__init__(self, parent)
self.setWindowIcon(QIcon('Xarphus/Images/16x16/world1.png'))
self.statusBar().showMessage('Ready')
self.MNUL_Verwaltung = MainWindow_MenuBar() # Menuleiste wird in die Klasse MDIFormular hinzugefügt
self.setMenuBar(self.MNUL_Verwaltung)
self.Info_Program = Information() # Die Klasse "Information" in die Klasse "MenueLeiste" einbinden
[...]
self.DoShowToolBar = ToolBar_Manage()
self.addToolBar(self.DoShowToolBar)
if __name__ == "__main__":
print 'Dieses Programm läuft als Main.'
else:
print 'Das Programm wird von einem anderen Modul importiert.'
app = QApplication(sys.argv)
app.setAttribute(Qt.AA_DontShowIconsInMenus, False)
MDIWindow = MDIFormular()
MDIWindow.showMaximized()
sys.exit(app.exec_())
MDIForm_Menue.py (Hier habe ich besonders darauf geachtet, dass in beiden Modulen - English.py und German.py - die Klassen gleiche Namen haben: Language. So muss ich nicht viel Code-Schnippel basteln)
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import QAction, QMenuBar, QIcon, QPixmap
from PyQt4.QtCore import SIGNAL, SLOT, QString
class MainWindow_MenuBar(QMenuBar):
def __init__ (self, parent=None):
QMenuBar.__init__(self, parent)
SprachWahl = "German"
if SprachWahl == "German":
from Language.German import Language
if SprachWahl == "English":
from Language.English import Language
self.MenuBar_Dict_Language = Language() # Die Klasse "LanguageGerman" in die Klasse "MenueLeiste" einbinden
self.Info_Program = Information()
########################################################################
###### Menuleiste (=MNUL) "Verwaltung" ###########################################
########################################################################
# Eine eigenständige Menuleiste wird erstellt.
self.menuManage = self.addMenu(self.MenuBar_Dict_Language.Dict_MenuBar["menuManage"])
# Menüpunk
self.DoShowmnuFilm = self.menuManage.addMenu((self.MenuBar_Dict_Language.Dict_MenuBar["menuMovie"]))
# Untermenü
self.FilmAdd = self.DoShowmnuFilm.addAction((self.MenuBar_Dict_Language.Dict_MenuBar["menuAddMovie"]))
self.FilmAdd.setStatusTip(self.MenuBar_Dict_Language.Dict_MenuBar["menuAddMovie"])
self.FilmAdd.setShortcut("Ctrl+F")
self.SerieAdd = self.DoShowmnuFilm.addAction((self.MenuBar_Dict_Language.Dict_MenuBar["menuAddSerie"]))
self.SerieAdd.setStatusTip(self.MenuBar_Dict_Language.Dict_MenuBar["menuAddSerie"])
self.SerieAdd.setShortcut("Ctrl+S")
[...]
German.py
Code: Alles auswählen
# -*- coding: cp1252 -*-
class Language(object):
###############################
####### MDIForm ###############
###############################
# Nur die Menuleiste und die StatusbarTip
Dict_MenuBar = {
"menuManage" : "Verwaltung",
"menuMovie" : "Filme",
"menuAddMovie" : "Film hinzufügen",
"menuAddSerie" : "Serie hinzufügen",
[...]
}
English.py
Code: Alles auswählen
# -*- coding: cp1252 -*-
class Language(object):
###############################
####### MDIForm ###############
###############################
# Nur die Menuleiste und die StatusbarTip
Dict_MenuBar = {
"menuManage" : "Manage",
"menuMovie" : "Movie",
"menuAddMovie" : "Add Movie",
"menuAddSerie" : "Add Serie",
[...]
}