【问题标题】:Python tkinter simpledialog. How to bind a key to the OK button in simpledialogPython tkinter 简单对话框。如何在 simpledialog 中将键绑定到 OK 按钮
【发布时间】:2015-11-11 20:39:00
【问题描述】:
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 函数而不制作小部件。我想知道如何才能实现我想要的。

【问题讨论】:

    标签: python tkinter widget bind 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()
    

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多