![](/img/trans.png)
[英]Python 3 TKinter Window will not open until command has been executed
[英]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.