Найти - Пользователи
Полная версия: Меню с Tk
Начало » GUI » Меню с Tk
1
jerdeks
Я хочу написать одну функцию для пунктов меню “Новый”, “Открыть” и т.д. в функцию должен передаваться int определяющий, какой пункт меню был выбран. Так, как сейчас, функция file_dialog зачем-то выполняется при запуске. Если потом нажимать “Открыть” ничего не происходит

from Tkinter import *
import tkMessageBox
class GuiMain(Tk):
def __init__(self):
Tk.__init__(self)
self.title(“TSP v 0.01”)
# Меню
menu_main = Menu(self)
self.config(menu = menu_main)
menu_file = Menu(menu_main)

menu_main.add_cascade(label = “Файл”, menu = menu_file)

menu_file.add_command(label = “Открыть”, command = self.file_dialog(1))
menu_file.add_command(label = “Сохранить”)
menu_file.add_command(label = “Сохранить как…”)
menu_file.add_separator()
menu_file.add_command(label = “Печать”)
menu_file.add_command(label = “Выход”)
#menu_main
self.c = Canvas(self, width = 400, height = 300, bg = “white”)
self.c.pack(fill = BOTH, expand = 1)

def file_dialog(self, n):
if n == 1:
tkMessageBox.showinfo(“1”, “1”)

gui_main = GuiMain()
gui_main.mainloop()
igor.kaist
Так делать нельзя вызывайте функцию через lambda.
jerdeks
вот так написал:
    file_dialog = lambda n:
if n == 1:
tkMessageBox.showinfo("1", "1")
file_dialog = lambda n:
^
SyntaxError: invalid syntax
Griffon
О боже. Вы либо функцию пишите, либо лямбда функцию, но не мешайте одно с другим.
Почитайте литературу.

И пихаете вы это не туда куда надо.
Имелось ввиду lambda: self.file_dialog(1)
jerdeks
ладно ругаться-то)) вот теперь работает!)) только почему так - непонятно. объясните пожалуйста
Griffon
Что принимает command?
Что делает лямбда?
Почему не работало раньше?
Ответы на эти и другие вопросы вы найдёте в литературе по питону, а также “Tkinter reference: a GUI
for Python”.
jerdeks
ну да, форумы для того, чтобы старожилы гордились перед новичками сделаны. а вовсе не для того, чтобы помогать друг другу решать какие-то вопросы, которые искать в манах долго и скучно
сорри за офтоп.
*ушел курить маны*
Griffon
Нет. Форумы для того что бы давать ответы на тонкие вопросы, давать направление, но не для того чтобы разъяснять всем азы.
Я потратил всего два дня на чтение литературы по питону. Другие языки знаю постольку поскольку.
Если тебе лень читать маны, то почему другим должно быть не лень читать их за тебя?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB