закрытие меню tkinter после выбора - PullRequest
0 голосов
/ 20 сентября 2019

Я нашел этот скрипт в учебнике pythonspot , но я не могу закрыть его после того, как выбор сделан, я попытался добавить root.destroy(), но он этого не сделал.В основном я хочу сохранить выделение в переменной (чтобы я мог использовать его позже) и уничтожить окно после выделения.Я очень новичок в tkinter

from tkinter import *
root = Tk()
root.title("Tk dropdown example")

# Add a grid
mainframe = Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)

# Create a Tkinter variable
tkvar = StringVar(root)

# Dictionary with options
choices = { 'Pizza','Lasagne','Fries','Fish','Potatoe'}
tkvar.set('Pizza') # set the default option

popupMenu = OptionMenu(mainframe, tkvar, *choices)
Label(mainframe, text="Choose a dish").grid(row = 1, column = 1)
popupMenu.grid(row = 2, column =1)

# on change dropdown value
def change_dropdown(*args):
    print( tkvar.get() )

# link function to change dropdown
tkvar.trace('w', change_dropdown)

root.mainloop()
#root.destroy()

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете использовать опцию command в OptionMenu для выполнения функции, когда пользователь выбирает элемент (принимая выбранный элемент в качестве аргумента).В этой функции вы закроете окно и назначите выбор пользователя глобальной переменной, чтобы вы могли использовать ее после закрытия графического интерфейса:

def on_selection(value):
    global choice
    choice = value
    root.destroy()

Вот полный пример:

import tkinter as tk
root = tk.Tk()

# Create a Tkinter variable
tkvar = tk.StringVar(root)

# options
choices = ['Pizza','Lasagne','Fries','Fish','Potatoe']
tkvar.set('Pizza') # set the default option

def on_selection(value):
    global choice
    choice = value  # store the user's choice
    root.destroy()  # close window

popupMenu = tk.OptionMenu(root, tkvar, *choices, command=on_selection)
tk.Label(root, text="Choose a dish").grid(row=0, column=0)
popupMenu.grid(row=1, column =0)

root.mainloop()

# Do whatever you want with the user's choice after closing the window
print('You have chosen %s' % choice)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...