Python 3.x 我如何使用tkinter中的按钮更改菜单的状态?

Python 3.x 我如何使用tkinter中的按钮更改菜单的状态?,python-3.x,tkinter,Python 3.x,Tkinter,我想在tkinter做一个单位转换器。我制作了两个下拉菜单;第一个选项允许用户选择要转换的单位,第二个选项允许用户选择要转换的单位。我想在他们在第一个菜单中选择一个选项后,禁用第二个菜单中所有没有意义的选项,如果他们想转换千克,那么在第二个菜单中选择厘米是没有意义的 我曾尝试使用StringVar来更改菜单的状态,但它不起作用。我不知道下一步该怎么办。我一直在使用Tutorialspoint的文档,但是我找不到任何第一次使用tkinter的东西 import tkinter as tk roo

我想在tkinter做一个单位转换器。我制作了两个下拉菜单;第一个选项允许用户选择要转换的单位,第二个选项允许用户选择要转换的单位。我想在他们在第一个菜单中选择一个选项后,禁用第二个菜单中所有没有意义的选项,如果他们想转换千克,那么在第二个菜单中选择厘米是没有意义的

我曾尝试使用StringVar来更改菜单的状态,但它不起作用。我不知道下一步该怎么办。我一直在使用Tutorialspoint的文档,但是我找不到任何第一次使用tkinter的东西

import tkinter as tk

root = tk.Tk()
root.geometry('600x600')

my_var = tk.StringVar()
my_var.set('active')

unit_1 = tk.Menubutton(root,text='This is the first menu button',bg='white',activebackground='#2E64FE',activeforeground='#FFFFFF')

menu_1 = tk.Menu(unit_1)
unit_1.config(menu=menu_1)

menu_1.add_command(label='Inches',command= lambda: my_var.set('disabled') )

menu_1.add_command(label='Kilograms')

unit_2 = tk.Menubutton(root,text='This is the second menu button',bg='white',activebackground='#2E64FE',activeforeground='#FFFFFF')

menu_2 = tk.Menu(unit_2)
unit_2.config(menu=menu_2)

menu_2.add_command(label='Centimeters')

menu_2.add_command(label='Pounds',state= my_var.get())

unit_1.place(relx=0.03,rely=0.08,relheight=0.04,relwidth=0.45)
unit_2.place(relx=0.52,rely=0.08,relheight=0.04,relwidth=0.45)

root.mainloop()
在这里,我试图使第一个菜单中的按钮“英寸”禁用第二个菜单中的按钮“磅”,但当我单击“英寸”时,“磅”不会发生任何变化。

tk.StringVar用于更改某些内容上的文本,例如,如果您想要一个带有动态文本的按钮,您可能需要使用tk.StringVar

你想做的是不同的事情;您想更改标签的配置。因此,您需要找到元素并调整其状态:

将tkinter作为tk导入 root=tk.tk 根。几何图形“600x600” my_var=tk.StringVar 我的变量设置为“活动” unit_1=tk.Menubuttonroot,text='这是第一个菜单按钮',bg='white',activebackground='2E64FE',activeforeground='FFFF' menu_1=tk.Menuunit_1 单元1.配置菜单=菜单1 菜单\u 1.添加\u commandlabel='Inches',command=lambda:禁用\u磅 菜单\u 1.添加\u commandlabel='kg',command=lambda:禁用\u厘米 unit_2=tk.Menubuttonroot,text='这是第二个菜单按钮',bg='white',activebackground='2E64FE',activeforeground='FFFF' menu_2=tk.Menuunit_2 单元2.配置菜单=菜单2 菜单2.添加命令标签='cm' 菜单2.add\u commandlabel='Pounds',state=my\u var.get 单位为1.placerelx=0.03,Rele=0.08,relheight=0.04,relwidth=0.45 单位2.placerelx=0.52,Rele=0.08,relheight=0.04,relwidth=0.45 def禁用单位磅: 菜单2.entryconfigPounds,状态=已禁用 菜单2.EntryConfigcm,状态=活动 def禁用单位厘米: 菜单2.entryconfigPounds,状态=活动 菜单2.EntryConfigcm,状态=禁用 root.mainloop