Как использовать значение по умолчанию для меню GUI, управляемое событиями, перед тем, как пользователь запускает свои события в tkinter, Python? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть одно меню в моем GUI. Это меню используется для выбора метки, которая будет добавлена ​​к GUI.

Когда я запускаю программу, меню уже показывает выбранную опцию по умолчанию, но эта опция нигде не используется в программе. Требуется действие пользователя (нажмите и выберите в меню), чтобы вывести что-то из этого меню.

Я хочу, чтобы моя программа немедленно использовала опцию меню по умолчанию, которая позже может быть изменена пользователем. Можете ли вы дать мне советы не только для этой конкретной задачи, связанной с меткой, но и вообще? Как использовать значение меню по умолчанию в программе, без взаимодействия с меню?

Это мой код:

from tkinter import *

root=Tk()
root.title("test")
# root.geometry("400x400")

def selected(event):
    myLabel=Label(root, text=clicked.get()).pack()

options=["a","b","c"]

clicked = StringVar()
clicked.set(options[0])

drop=OptionMenu(root,clicked,*options, command=selected)
drop.pack()
root.mainloop()

1 Ответ

1 голос
/ 25 апреля 2020

Простой способ:

from tkinter import *

root=Tk()
root.title("test")
# root.geometry("400x400")

def selected(event):
    myLabel['text'] = clicked.get()

options=["a","b","c"]

clicked = StringVar()
clicked.set(options[0])

drop=OptionMenu(root,clicked,*options, command=selected)
drop.pack()


myLabel = Label(root, text=clicked.get())
myLabel.pack()

root.mainloop()

Или я предложил использовать textvariable, тогда вам не нужно использовать функцию для изменения метки:

from tkinter import *

root=Tk()
root.title("test")
# root.geometry("400x400")


options=["a","b","c"]

clicked = StringVar()
clicked.set(options[0])

drop=OptionMenu(root,clicked,*options)
drop.pack()


myLabel = Label(root, textvariable=clicked) # bind a textvariable
myLabel.pack()

root.mainloop()
...