【问题标题】:Access OptionMenu items - Tkinter访问 OptionMenu 项目 - Tkinter
【发布时间】:2021-03-09 16:23:54
【问题描述】:

我有四个 OptionMenu,每个 OptionMenu 都填充了一个条目列表(每个菜单都相同)。

from tkinter import *

def selected (event):
    print (clicked.get())

window = Tk()

entries = ["a", "b", "c", "d"]

for i in range (4):
    window.rowconfigure (i, minsize = 5)
    a_frame = Frame (master = window)
    a_frame.grid (row = i, column = 0, padx = 1, pady = 1)
    clicked = StringVar()
    clicked.set (entries[0])
    a_menu = OptionMenu (a_frame, clicked, *entries, command = selected)
    a_menu.pack()

window.mainloop()

我正在尝试访问从每个 OptionMenu 中选择的值,但我只打印了底部 OptionMenu 中的值。当我从其他下拉菜单中选择一些值时,会“检测到”该操作,但仅打印底部 OptionMenu 中的值。 如果您尝试运行上面的代码,您可以轻松理解我的意思。如何访问从每个 OptionMenu 中选择的每个值?非常感谢!

【问题讨论】:

  • 我不明白你的意思?当我运行您的脚本时,它会按预期运行。
  • 尝试从第一个下拉菜单中选择字母“d”,您应该会打印出一个“d”,但您会得到一个“a”。我想打印“d”...

标签: python user-interface tkinter callback optionmenu


【解决方案1】:

OptionMenu 构造函数:

OptionMenu(父级,变量,choice1,choice2,...)

from tkinter import Tk, StringVar, OptionMenu

def callback(arg):
    print(arg)

root = Tk()
option = StringVar()
op = OptionMenu(root, option, 'a', 'b', 'c', 'd', command=callback)
op.grid()
option.set('a')
root.mainloop()

这是您可以开始的基础。调用回调函数时,它会将您的选择作为参数传递并仅将参数打印到控制台。

希望你现在有一个基本的了解。

所以在您的情况下,您需要打印参数而不是“print (clicked.get())”

试试这个:

from tkinter import *

def selected (event):
    print (event)

window = Tk()

entries = ["a", "b", "c", "d"]

for i in range (4):
    window.rowconfigure (i, minsize = 5)
    a_frame = Frame (master = window)
    a_frame.grid (row = i, column = 0, padx = 1, pady = 1)
    clicked = StringVar()
    clicked.set (entries[0])
    a_menu = OptionMenu (a_frame, clicked, *entries, command = selected)
    a_menu.pack()

window.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-23
    • 2019-07-04
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2021-04-29
    相关资源
    最近更新 更多