seleccion photoimage hacer como python tkinter menubar

photoimage - Las barras de menú de Python Tkinter no se muestran



python tkinter photoimage (3)

Según algunos comentarios que hizo a una de las respuestas, aparentemente está ejecutando esto en un Macintosh. El código funciona bien, pero el menú aparece en la barra de menú mac en lugar de en la ventana, como lo hace en Windows y Linux. Por lo tanto, no hay nada de malo con su código en lo que se refiere a la barra de menú.

Intento hacer una GUI usando Tkinter y he comenzado a implementar una barra de menú. He visto algunos tutoriales y he escrito un código para ello, pero nunca aparece una barra de menú, solo un marco en blanco con fondo blanco. Sin embargo, esto no solo sucede con mi código; al copiar y pegar el código de uno de los tutoriales antes mencionados en un nuevo guión, se exhibe el mismo comportamiento.

Agradecería que alguien pudiera arrojar algo de luz sobre lo que está causando esto. Mi sistema es OS X 10.5, Python 2.7, Tk 8.4. Aquí está el código del tutorial que no parece funcionar:

#!/usr/local/bin/python2.7 from Tkinter import * from ttk import * class App(Frame): def __init__(self): Frame.__init__(self) self.master.geometry(''400x300'') self.master.title(__file__) self.pack() self.menu = Menu(tearoff=False) self.master.config(menu = self.menu) fm = self.file_menu = None fm = Menu(self.menu, tearoff=False) self.menu.add_cascade(label=''File'', menu = fm) fm.add_command(label=''Say Hello'', command = self.say_hello) fm.add_separator() fm.add_command(label=''Quit'', command = self.quit) self.mainloop() def say_hello(self, *e): self.label = Label(self.master, text=''Hello there!'') self.label.pack(anchor=CENTER, fill=NONE, expand=YES, side=LEFT) if __name__ == ''__main__'': App()

y mi código está aquí:

from Tkinter import * class App(Frame): def __init__(self, parent): Frame.__init__(self, parent) parent.title("Cluedo Solver 1.0") menubar = Menu(root) menubar.add_command(label="File") menubar.add_command(label="Quit", command=root.quit()) root.config(menu=menubar) root=Tk() root.geometry("300x250+300+300") app=App(root) root.mainloop()


Código con explicación

Por experiencia personal, he descubierto que generalmente es más fácil administrar todos los widgets en un método de widgets. Eso es lo que hice aquí, y funcionó. Además, en lugar de padre, utilicé maestro. Ahora te guiaré paso a paso por el código.

from Tkinter import *

Importamos Tkinter (cosas de GUI)

class App(Frame):

Creamos una clase llamada App , que es el Frame donde se guardan los widgets.

def __init__(self, master): Frame.__init__(self, master) self.grid() self.widgets()

Creamos un método llamado __init__ . Esto inicializa la clase y ejecuta otro método llamado widgets .

def widgets(self): menubar = Menu(root) menubar.add_command(label="File") menubar.add_command(label="Quit", command=root.quit()) root.config(menu=menubar)

Creamos el método de widgets . Aquí es donde se agrega el widget, menubar . Si tuviéramos que crear más widgets, también estarían aquí.

root=Tk() root.title("Menubar") app=App(root) root.mainloop()

Por último, le damos a la ventana completa algunas propiedades. Le damos un título, Menubar , y ejecutamos la clase de la App . por último, comenzamos el enlace principal de la GUI con root.mainloop .


Compruebe la barra de menú de mac si está haciendo alguna GUI que implique una barra de menús que le gustaría ver o probar. Es sutil y puede pensar que el código no funciona. Haga clic en la aplicación (en este caso, ventana de python), se mostrará una barra de menú desplegable.