python - tkinter:如何在选项菜单中获得价值?
问题描述
我正在尝试使用OptionMenu
来通过按钮小部件分配命令,但是由于某种原因我无法获得正确的值。所以我的代码是这样的:
root = tk.Tk()
choice1 = tk.StringVar()
choice1.set("DEFAULT")
options1 = tk.OptionMenu(root, choice1, "text1", "text2")
options1.place(x=320, y=355)
start_button = tk.Button(root, text="start")
start_button.place(x=200, y=400)
if choice1.get() == "text1":
start_button.configure(command=lambda: print("some text"))
root.mainloop()
如果该选项为 on "text1"
,则它不起作用,但是如果我更改if choice1.get() == "text1"
为if choice1.get() == "DEFAULT"
then 它似乎可以工作,但对于每个选项,不仅是默认值。
如何根据OptionMenu
小部件中选择的内容将特定命令分配给外部按钮?
顺便说一句,如果我将命令更改为打印choice1.get()
,它会打印出正确的选项(而我只是将命令分配给按钮小部件而没有if
声明)。
编辑:根据要求,游戏是连接 4,选项是人类和 PC。我想要做的是有 2 个选项菜单,一个用于播放器 1(黄色),一个用于播放器 2(红色)。选择 Human vs Human 后,我希望开始按钮将我引导至特定功能。
这是我写的(需要编辑,对它的外观感到抱歉):
self.__root = root
self.__global_size = 70
self.game = Game()
menu_draw = tk.Canvas(self.__root, width=500, height=500)
menu_draw.pack()
self.__root.resizable(0, 0)
welcome_label = tk.Label(self.__root, text=WELCOME_MSG, font=("Comic Sans MS", 20), bg="White", fg="Blue",
relief="groove")
menu_draw.create_oval((100, 250), (200, 350), fill="red")
menu_draw.create_oval((300, 250), (400, 350), fill="Yellow")
welcome_label.place(x=60, y=40)
choice1 = tk.StringVar()
choice1.set("Yellow")
options1 = tk.OptionMenu(self.__root, choice1, "Human", "PC")
options1.configure(bg="Yellow")
options1.place(x=320, y=355)
choice2 = tk.StringVar()
choice2.set("Red")
options2 = tk.OptionMenu(self.__root, choice2, "Human", "PC")
options2.configure(bg="Red")
options2.place(x=100, y=355)
start_button = tk.Button(self.__root, text="START", font=("Comic Sans MS", 20), bg="White", fg="Blue")
start_button.place(x=200, y=400)
if choice1.get() == "Human" and choice2.get() == "Human":
start_button.configure(command=lambda: self.mainm(self.__root))
self.__root.mainloop()
但是,它不起作用。如果我分别替换"Human"
为"Yellow"
和"Red"
,那么它可以工作,但它适用于每个选定的选项。
self.mainm
指令执行另一个功能,即破坏旧根并创建一个新根(以创建板和规则)。
解决方案
推荐阅读
- python - 如何在增加值后停止循环 x 秒
- vba - 如何仅在复选框上触发 BeforeUpdate 事件?
- c++ - 正则表达式替换捕获,然后是数字分离
- javascript - Intl.NumberFormat 空格字符不匹配
- ruby - 简单的 ruby 数组拆分
- r - 我在 R 中有一个多列 ts,我想使用 dygraph 绘制其中的 2 个
- single-sign-on - SAML - 创建新用户时,我如何获取基本字段?
- python - 如何在 Python 2.7 中读取大型单列 CSV 文件
- javascript - 为什么 JSON.parse 与字符串数组一起使用时有时会返回错误?
- php - 用 str_replace 检查两个相同的 str