当多个OptionMenus时,Tkinter清除Optionmen菜单选中菜单旁边的菜单

时间:2016-09-28 17:35:05

标签: python tkinter ttk optionmenu

我在ttk.Label循环中创建了任意数量的ttk.OptionMenufor s并将它们存储在名为entries的字典中,以便以后根据需要访问它们。

我的问题,有多个OptionMenus,当我在一个下拉列表中选择一个选项时,会为框架中的所有OptionMenus设置复选标记。

以下是的例子。我在第一个下拉菜单中选择B,然后转到第三个下拉列表,在选择任何内容之前,我看到B旁边有一个复选标记。

OptionMenuSelectionCheckmark

我希望所有OptionMenus彼此独立,并且除非已做出选择,否则不会显示复选标记。换句话说,是否有我可以设置的设置,以便在一个下拉列表中进行选择并不会在所有其他下拉列表中设置相同的复选标记?

我不知道我是否应该查看dropdown['menu'].config().keys()dir(dropdown['menu'])

在这种情况下我在Windows 7机器上。

下面的代码重现了上面的图像和场景:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

entries = {}

for row in range(3):
  for column in range(2):
    index = (row, column)
    if column == 0:
      label = ttk.Label(root, text=repr(index), anchor=tk.E)
      label.grid(row=row, column=column)
    elif column == 1:
      var = tk.StringVar()
      options = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
      var.set(options[0])
      dropdown = ttk.OptionMenu(root, var, options[0], *options)
      dropdown.config(width=15)
      dropdown.grid(row=row, column=column)

      entries[index] = [label, var, dropdown]

for index,objects in entries.items():
  print(index, type(objects[0]), type(objects[1]), type(objects[2]), type(objects[2]['menu']))

root.config(padx=10, pady=10)
root.mainloop()

0 个答案:

没有答案