Если вы хотите использовать что-то вроде result = simplechoicebox("title","Text",["Choices"],parent)
, вы можете просто создать для него свой собственный класс.
class SimpleChoiceBox:
def __init__(self,title,text,choices):
self.t = Toplevel()
self.t.title(title if title else "")
self.selection = None
Label(self.t, text=text if text else "").grid(row=0, column=0)
self.c = ttk.Combobox(self.t, value=choices if choices else [], state="readonly")
self.c.grid(row=0, column=1)
self.c.bind("<<ComboboxSelected>>", self.combobox_select)
def combobox_select(self,event):
self.selection = self.c.get()
self.t.destroy()
Теперь вы можете определить свой c_funcbutton
, как показано ниже:
def c_funcbutton():
global res
res = SimpleChoiceBox("Ask","What is your favourite fruit?",["Apple","Orange","Watermelon"])
Однако это значение не вернется - обычный класс работает иначе, чем simpledialog
.Но вы можете получить доступ к выбору напрямую с помощью res.selection
, как показано ниже:
menu_com.add_command(label='Another',command=lambda: print (res.selection))