Python tkinter 简单对话框。如何在simpledialog中将一个键绑定到OK按钮
Python tkinter simpledialog. How to bind a key to the OK button in 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)
我想将小键盘上的回车键绑定到 simpledialog askstrinig 提示符中的确定按钮。 (后来发现正常的回车键已经绑定了,但是我需要两个回车键都绑定)
我知道如何使用绑定功能将回车键绑定到小部件。但是,为此我需要对小部件的引用。
对于这种情况,我没有对小部件的引用,因为我在没有制作小部件的情况下在 simpledialog 上调用 askstring 函数。我想知道如何才能实现我想要的。
SimpleDialog
是 "simple"。如果您需要不同的东西,请创建自己的对话框(使用 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()
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)
我想将小键盘上的回车键绑定到 simpledialog askstrinig 提示符中的确定按钮。 (后来发现正常的回车键已经绑定了,但是我需要两个回车键都绑定) 我知道如何使用绑定功能将回车键绑定到小部件。但是,为此我需要对小部件的引用。
对于这种情况,我没有对小部件的引用,因为我在没有制作小部件的情况下在 simpledialog 上调用 askstring 函数。我想知道如何才能实现我想要的。
SimpleDialog
是 "simple"。如果您需要不同的东西,请创建自己的对话框(使用 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()