繁体   English   中英

禁用 tkinter 菜单选项,直到另一个完全执行

[英]Disable tkinter menu option until another one has been fully executed

我正在使用 tkinter 编写一个简单的脚本,该脚本允许用户通过菜单选项将 csv 文件加载到 dataframe 中。 选择后,内容将打印到屏幕上。 然后同一菜单下的另一个选项绘制 dataframe。 我对 go 如何禁用 plot 选项感到困惑,直到实际加载 dataframe。 到目前为止我的例子:

import pandas as pd
from matplotlib import pyplot as plt
from tkinter import Tk, filedialog,Menu

root = Tk()

def _open():
    root.filename = filedialog.askopenfilename(initialdir = "Users/fishbacp/Desktop",title = "Select file",filetypes = (("csv","*.csv"),("all files","*.*")))
    df=pd.read_csv(root.filename)
    print(df)

def _plotdf():
    df.plot()
    plt.show()

def _quit():
    root.quit()
    root.destroy()

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=_open)
filemenu.add_command(label="Plot", command=_plotdf) 
filemenu.add_command(label="Exit", command=_quit)
menubar.add_cascade(label="Options", menu=filemenu)
root.config(menu=menubar)

root.mainloop()  

我意识到

filemenu.entryconfig('Plot',state='disabled') 

将禁用 plot 按钮。 但我对它是否可以用于我的目的感到困惑。

你可以试试这个。 由于仅在加载 dataframe 后才调用打印 function,因此菜单选项在其后启用和禁用。

import pandas as pd
from matplotlib import pyplot as plt
from tkinter import *
from tkinter import filedialog


root = Tk()

def _open():
    root.filename = filedialog.askopenfilename(initialdir = "Users/fishbacp/Desktop",title = "Select file",filetypes = (("csv","*.csv"),("all files","*.*")))
    global df
    df=pd.read_csv(root.filename)
    print(df)
    filemenu.entryconfig("Open",state="disabled")#==Disable Menu Option
    filemenu.entryconfig("Plot",state="normal")#==Enable Menu Option

def _plotdf():
    
    df.plot()
    plt.show()
    filemenu.entryconfig("Plot",state="disabled")#==Disable Menu Option
    filemenu.entryconfig("Open",state="normal")#==Enable Menu Option
    

def _quit():
    root.quit()
    root.destroy()

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=_open)
filemenu.add_command(label="Plot", command=_plotdf) 
filemenu.entryconfig("Plot",state="disabled") #==Disable Menu Option
filemenu.add_command(label="Exit", command=_quit)
menubar.add_cascade(label="Options", menu=filemenu)
root.config(menu=menubar)

root.mainloop()  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM