Форум сайта python.su
Я хочу написать одну функцию для пунктов меню “Новый”, “Открыть” и т.д. в функцию должен передаваться 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()
Отредактировано (Июнь 12, 2010 09:59:56)
Офлайн
Так делать нельзя вызывайте функцию через lambda.
Офлайн
вот так написал:
file_dialog = lambda n:
if n == 1:
tkMessageBox.showinfo("1", "1")
Офлайн
О боже. Вы либо функцию пишите, либо лямбда функцию, но не мешайте одно с другим.
Почитайте литературу.
И пихаете вы это не туда куда надо.
Имелось ввиду lambda: self.file_dialog(1)
Офлайн
ладно ругаться-то)) вот теперь работает!)) только почему так - непонятно. объясните пожалуйста
Офлайн
Что принимает command?
Что делает лямбда?
Почему не работало раньше?
Ответы на эти и другие вопросы вы найдёте в литературе по питону, а также “Tkinter reference: a GUI
for Python”.
Офлайн
ну да, форумы для того, чтобы старожилы гордились перед новичками сделаны. а вовсе не для того, чтобы помогать друг другу решать какие-то вопросы, которые искать в манах долго и скучно
сорри за офтоп.
*ушел курить маны*
Отредактировано (Июнь 12, 2010 20:34:44)
Офлайн
Нет. Форумы для того что бы давать ответы на тонкие вопросы, давать направление, но не для того чтобы разъяснять всем азы.
Я потратил всего два дня на чтение литературы по питону. Другие языки знаю постольку поскольку.
Если тебе лень читать маны, то почему другим должно быть не лень читать их за тебя?
Офлайн