Menühintergrund

Fragen zu Tkinter.
Antworten
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Hi!

Ich hab mit Tkinter ein Menü erstellt ich möchte aber nicht die Standard-Hintergrundfarbe bzw. Textfarbe. Kann ich die Farben irgendwie ändern oder geht das nur mit wxPython?

MfG

Henne
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

den Hindergrund kannst du mit

Code: Alles auswählen

menu.config(bg = 'farbe')
ändern. Für die Schriftfarbe geht das mit

Code: Alles auswählen

menu.config(fg = 'farbe')
Stephan
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

So kann ich zwar die Hintergrund- und Schriftfarben der Pop-up Menüs(ich glaub das heißt so :oops: ) Aber nicht die Hintergrund- und Schriftfarben des Toplevel-Menüs(wenn das anders heißt verbessert mich, ich meine diese menüleiste am oberen fensterrand) verändern. Ich möchte aber auch die Farbe des Toplevel-Menüs ändern. Wie geht das?

Trotzdem schonma thx an Stephan!!!

MfG

Henne
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

so geht das!

Code: Alles auswählen

root.config(background="orange")
root.option_add("*Background", "orange")
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Also mein Programm sieht jetzt so aus:

Code: Alles auswählen

from Tkinter import *

class Test:
    def __init__ (self):
        self.fenster = Tk()
        self.fenster.geometry("530x480")
        self.fenster.config(bg='#FF9900')
        self.__addMenue()
        self.__addDateimenue()
        self.__addSmenue()
        self.__addInfomenue()
        self.fenster.mainloop()

    def __addMenue(self):
        self.menue=Menu(self.fenster)
        self.fenster.configure(menu=self.menue)
        self.menue.config(background="black") 
        self.menue.option_add("*Background", "black")

    def __addDateimenue(self):
        self.dateimenue=Menu(self.menue)
        self.dateimenue.config(bg='black', fg='yellow')
        self.dateimenue.add_command(label='Test starten', font='Arial',8,'bold'),)
        self.dateimenue.add_command(label='Anzeigen')
        self.dateimenue.add_command(label='Einstellungen')
        self.dateimenue.add_separator()
        self.dateimenue.add_command(label='Programm beenden')
        self.dateimenue.add_separator()
        self.menue.add_cascade(label='Datei', menu=self.dateimenue)

    def __addSmenue(self):
        self.smenue=Menu(self.menue)
        self.smenue.config(bg='black', fg='yellow')
        self.smenue.add_command(label='1')
        self.smenue.add_command(label='2')
        self.smenue.add_command(label='3')
        self.smenue.add_separator()
        self.menue.add_cascade(label='Schwierigkeitsstufe', menu=self.smenue)

    def __addInfomenue(self):
        self.infomenue= Menu(self.menue)
        self.infomenue.config(bg='black', fg='yellow')
        self.infomenue.add_command(label='Homepage')
        self.infomenue.add_command(label='Versionsinfo')
        self.infomenue.add_separator()
        self.menue.add_cascade(label='Info', menu=self.infomenue)
        
test=Test()
Aber irgendwie funktioniert das immer noch nich. Was hab ich falsch gemacht?

MfG

Henne
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

In Zeile 24 sind zwei Fehler. Die Zeile muss so aussehen:

Code: Alles auswählen

self.dateimenue.add_command(label='Test starten', font=('Arial',8,'bold'))
Dann lässt sich das Programm starten. Wobei ich aber schwarze Schrift auf schwarzen Hindergrund in einem Menü seltsam finde :wink:
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Ja sry das war nur ein Fehler beim kopieren. In meinem Programm ist das mit den Klammern und dem Komma richtig. Das Problem liegt darin, dass meine Menüleiste immernoch nicht die richtige Hintergrundfarbe hat. Die Schriftfarbe habe ich nur noch nicht in orange geändert :wink: .

MfG

Henne
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

ich arbeite gerade daran habe ein wenig geduld bitte.
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Hi,
also mit "Menubutton" würde es gehen. Hier mal ein beispiel.

Code: Alles auswählen

#! /usr/bin/python
from Tkinter import *
class Main(Frame):
	def __init__(self, master=None): # *args, **kwargs'
		Frame.__init__(self, master)
		self.pack(expand=YES, fill=BOTH)
			
		self.menubar = Frame(self, relief=RAISED, bd=2, bg='orange')
		self.menubar.pack(side=TOP, fill=X)
		self.menubar.option_add('*background', 'yellow')
		
		self._datei = self.makeDateiMenu()
		self._schwer = self.makeSchwerMenu()
		self._info = self.makeInfoMenu()
		self.menubar.tk_menuBar(self._datei, self._schwer, self._info)
		
		
	def makeDateiMenu(self):
		datei_button = Menubutton(self.menubar, text='Datei', bg='orange')
		datei_button.pack(side=LEFT, padx=1)
		
		datei_button.menu = Menu(datei_button)
		
		datei_button.menu.add_command(label='Test Starten')
		datei_button.menu.add_command(label='Anzeigen...')
		
		datei_button['menu'] = datei_button.menu
		return datei_button
		
	def makeSchwerMenu(self):
		msm_button = Menubutton(self.menubar, text='Schwierigkeitsstufe', bg='orange')
		msm_button.pack(side=LEFT, padx=1)
		
		msm_button.menu = Menu(msm_button)
		
		msm_button.menu.add_command(label='1', underline=0)
		msm_button['menu'] = msm_button.menu
		return msm_button
		
	def makeInfoMenu(self):
		info_button = Menubutton(self.menubar, text='info', bg='orange')
		info_button.pack(side=RIGHT)
		
		info_button.menu = Menu(info_button)
		
		info_button.menu.add_command(label='info', underline=0,)
		
		info_button['menu'] = info_button.menu
		return info_button

def _Main():
	root = Tk()
	root.option_add('*background', 'black')
	app = Main(root)
	app.pack(side=TOP, fill=BOTH, expand=YES)
	root.mainloop()
	
if __name__=='__main__':
	_Main()
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

Ich glaub dann is es doch besser wenn ich mir mal die wxPython Docs durchlese :wink: . Danke @ all!

MfG

Henne
Antworten