jerdeks
Июнь 12, 2010 09:59:25
Я хочу написать одну функцию для пунктов меню “Новый”, “Открыть” и т.д. в функцию должен передаваться 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
Июнь 12, 2010 10:56:42
Так делать нельзя вызывайте функцию через lambda.
jerdeks
Июнь 12, 2010 11:04:14
вот так написал:
file_dialog = lambda n:
if n == 1:
tkMessageBox.showinfo("1", "1")
file_dialog = lambda n:
^
SyntaxError: invalid syntax
Griffon
Июнь 12, 2010 12:23:01
О боже. Вы либо функцию пишите, либо лямбда функцию, но не мешайте одно с другим.
Почитайте литературу.
И пихаете вы это не туда куда надо.
Имелось ввиду lambda: self.file_dialog(1)
jerdeks
Июнь 12, 2010 12:49:38
ладно ругаться-то)) вот теперь работает!)) только почему так - непонятно. объясните пожалуйста
Griffon
Июнь 12, 2010 18:52:38
Что принимает command?
Что делает лямбда?
Почему не работало раньше?
Ответы на эти и другие вопросы вы найдёте в литературе по питону, а также “Tkinter reference: a GUI
for Python”.
jerdeks
Июнь 12, 2010 20:34:08
ну да, форумы для того, чтобы старожилы гордились перед новичками сделаны. а вовсе не для того, чтобы помогать друг другу решать какие-то вопросы, которые искать в манах долго и скучно
сорри за офтоп.
*ушел курить маны*
Griffon
Июнь 13, 2010 00:44:36
Нет. Форумы для того что бы давать ответы на тонкие вопросы, давать направление, но не для того чтобы разъяснять всем азы.
Я потратил всего два дня на чтение литературы по питону. Другие языки знаю постольку поскольку.
Если тебе лень читать маны, то почему другим должно быть не лень читать их за тебя?