如何在不自动在Tkinter上打开的情况下在函数上调用命令

时间:2019-05-16 17:41:53

标签: python tkinter menu

我正在尝试向每个按钮添加一个功能,但是当我这样做时,该功能会立即打开,而无需按下菜单中的按钮。

你好,我是编程新手,我正在尝试学习一些有关为记事本创建菜单的基本知识,到目前为止,我已经学会了如何创建菜单及其中的按钮,我正在尝试添加每个按钮都有一个函数,但是当我这样做时,该函数会立即打开而无需我按菜单中的按钮,到目前为止唯一有效的方法是尝试使用lambda函数,但是我希望能够编写函数而不必在lambda函数之后编写该函数的整个代码。

from tkinter import Tk, scrolledtext, Menu, filedialog
from tkinter.scrolledtext import ScrolledText
from tkinter import*


#Root main window
root = Tk(className=" Text Editor")
textarea = ScrolledText(root, width=80, height=100)
textarea.pack()

# Menu options
menu = Menu(root)
root.config(menu=menu)
filename = Menu(menu)
edicion = Menu(menu)


# Funciones

def open_file ():
    file = filedialog.askopenfiles(parent=root, mode='rb', title="Select a file")
    if file != None:
        contenidos = file.read()
        textarea.insert('1.0', contenidos)
        file.close

menu.add_cascade(label="File", menu=filename)
filename.add_command(label="New")
filename.add_command(label="Open", command= open_file)

filename.add_command(label="Save")
filename.add_separator()
filename.add_command(label="Exit")
menu.add_cascade(label="Editar", menu=edicion)
edicion.add_command(label="Cortar")
edicion.add_command(label="Pegar")
edicion.add_command(label="Copiar")
textarea.pack()

root.mainloop()

1 个答案:

答案 0 :(得分:0)

在此行:

filename.add_command(label="Open", command= open_file())

您不希望在命令后添加多余的(),这会调用您的函数。尝试不使用:

filename.add_command(label="Open", command= open_file)