Ниже приведен скрипт Python для отображения меню (файл, опция), где опция используется для запуска функции conf.
Как я и предполагал, conf fun запускается только при нажатии на соответствующий виджет меню.
Это означает, что «ха-ха» будет напечатано, только когда я нажму «Option» / «Изменить список композиций», и «nana» будет напечатано только, когда я нажму «Option / Edit pvt list»
Однако, когда я запускаю скрипт top.py, 'haha' и 'nana' печатаются с самого начала. Это потому, что функция conf запускается два раза в начале. Это неожиданно. Пожалуйста, совет.
Ошибка, по-видимому, в следующих утверждениях:
menu_option.add_command (label = "Редактировать список компов", command = conf ('comp'))
menu_option.add_command (label = "Редактировать список pvt", команда = conf ('pvt'))
Код: -
#File name :top.py
from Tkinter import *
import ttk
def conf(section):
if section == 'comp':
print 'haha'
if section == 'pvt':
print 'nana'
pass
root = Tk()
root.title("NRUNTEST GUI VERSION 1")
menuframe = Frame(root)
menuframe.grid(column=0,row=0)
menuframe.columnconfigure(0,weight=1)
menuframe.rowconfigure(0,weight=1)
buttonh = ttk.Button(root, text='Quit',command=root.quit)
buttonh.grid(row=2, column=2, sticky=(E,W))
menubar = Menu(menuframe)
menu_file = Menu(menubar, tearoff=0)
menu_option = Menu(menubar, tearoff=0)
menubar.add_cascade(menu=menu_file, label='File')
menubar.add_cascade(menu=menu_option, label='Option')
**menu_option.add_command(label="Edit Comp List",command=conf('comp'))**
menu_option.add_separator()
**menu_option.add_command(label="Edit pvt List",command=conf('pvt'))**
menu_file.add_separator()
root.config(menu=menubar)
root.mainloop()