Имеется ли в меню параметров tkinter максимальное количество значений, которое оно может представлять?

1

Я воссоздал проблему в моем коде здесь. Вероятно, я неправильно определил список.

import tkinter as tk
Name=("")
j=0
AnimalNameList=["Badger","Beaver","Buffalo","Bull","Bulldog","Cobra","Curlew","Eagle","Falcon","Fox","Gannet","Hawk","Kestrel","Lion","Merlin","Otter","Owl","Panther","Peewit","Raven","Seagull","Seal","Stag","Swift","Tiger","Wolf","Woodpecker","Woodpigeon"]
for i in AnimalNameList:
    j=j+1
    print(i)
print(j)
root=tk.Tk()
Animals=tk.OptionMenu(root,Name,AnimalNameList)
Animals.grid(row=1,column=1)
root.mainloop()
  • 0
    По какой-то конкретной причине ваша последняя строка - просто root.mainloop , без скобок?
  • 1
    Распакуйте ваш список: Animals = tk.OptionMenu(root, Name, *AnimalNameList) и, как сказал @user2357112 user2357112, вызовите mainloop с помощью root.mainloop()
Теги:
tkinter

1 ответ

1
Лучший ответ

Вы можете проверить, сколько значений оно может принять.

Вот простой пример:

import tkinter as tk

long_list = []
for i in range(50000):
    long_list.append(i)

root = tk.Tk()
Animals=tk.OptionMenu(root, "start", *long_list)
Animals.grid(row=1, column=1)
root.mainloop()

Вышеупомянутое работает для меня, хотя загрузка занимает несколько секунд. Если я попытаюсь сделать 70 000 вместо этого, это не сработает. Думаю, что максимальные элементы в списке могут быть очень большими в соответствии с этим постом. Я полагаю, что ограничение может быть основано на памяти. Однако проблема заключается не в том, что у вас слишком много вариантов.

Вы забываете * свой аргумент в OptionsMenu. Это необходимо при передаче списка опций, иначе он даст вам один выпадающий элемент со всеми значениями из списка в одной строке.

Поэтому измените это:

Animals=tk.OptionMenu(root,Name,AnimalNameList)

К этому:

Animals=tk.OptionMenu(root,Name,*AnimalNameList)

Также убедитесь, что вы выполняете root.mainloop() поскольку скобки необходимы.

  • 0
    Спасибо! Это сработало!
  • 0
    @Ligen рад помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню