1
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)

我想将键盘上的 enter 键绑定到 simpledialog askstrinig 提示中的 OK 按钮。(后来意识到已经绑定了正常的回车键,但是我需要绑定两个回车键)我知道如何使用绑定函数将回车键绑定到小部件。但是,要做到这一点,我需要对小部件的引用。

对于这种情况,我没有对小部件的引用,因为我在 simpledialog 上调用 askstring 函数而不制作小部件。我想知道如何才能实现我想要的。

4

1 回答 1

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()
于 2015-11-12T03:59:29.597 回答