Python tkinter simpledialog. Как привязать ключ к кнопке ОК в simpledialog
def prompt_new_name(self):
new_name = simpledialog.askstring("Name Change", "New name")
if new_name is not None:
self.request_name_change(new_name)
Я хочу привязать клавишу ввода на клавиатуре к кнопке ОК в приглашении простого запроса. (позже выяснилось, что нормальная клавиша ввода уже связана, но мне нужно связать обе клавиши ввода) Я знаю, как связать клавишу ввода с виджетом, используя функцию связывания. Однако для этого мне нужна ссылка на виджет.
В этом случае у меня нет ссылки на виджет, так как я вызываю функцию askstring для simpledialog без создания виджета. Мне интересно, как я могу добиться того, чего хочу.
1 ответ
Решение
SimpleDialog
это просто". Создать собственный диалог (используя TopLevel
виджет) если нужно что то другое.
Или увидеть SimpleDialog
исходный код для воссоздания askstring
https://fossies.org/dox/Python-3.5.0/simpledialog_8py_source.html
import tkinter as tk
import tkinter.simpledialog
class My_QueryString(tkinter.simpledialog._QueryString):
def body(self, master):
self.bind('<KP_Enter>', self.ok) # KeyPad Enter
super().body(master)
def myaskstring(title, prompt, **kw):
d = My_QueryString(title, prompt, **kw)
return d.result
#---------------------------------------------------------
root = tk.Tk()
new_name = myaskstring("Name Change", "New name")
if new_name:
print(new_name)
root.mainloop()