【问题标题】:How do I make the user be able to press enter in an Entry box Tkinter如何让用户能够在输入框 Tkinter 中按 Enter
【发布时间】:2016-04-16 10:52:12
【问题描述】:

这是我的程序:

我无法让用户按 Enter 键,因此程序实际上可以自行触发。我对tkinter 很陌生!

这是组合框的代码:

self.measurements = StringVar()
self.Combobox_Length_Left = ttk.Combobox(self.length_frame, textvariable = self.measurements, values = ('mm', 'cm', 'inches', 'feet', 'yards', 'meter', 'km', 'miles'), width = 10)
self.Combobox_Length_Left.grid(row = 2, column = 0, padx = 5, pady = 5, sticky = E)

self.measurements1 = StringVar()
self.Combobox_Length_Right = ttk.Combobox(self.length_frame, textvariable = self.measurements1, value = ('mm', 'cm', 'inches', 'feet', 'yards', 'meter', 'km', 'miles'), width = 10)
self.Combobox_Length_Right.grid(row = 2, column = 2, padx = 5, pady = 5, sticky = E)

这里是输入框的代码:

self.Text_Length_Left = IntVar()
self.Entry_Length_Left = ttk.Entry(self.length_frame, textvariable = self.Text_Length_Left,width = 13)
self.Entry_Length_Left.grid(row = 3, column = 0, padx = 5, pady = 5)

self.Text_Length_Right = IntVar()
self.Entry_Length_Right = ttk.Entry(self.length_frame, textvariable = self.Text_Length_Right,width = 13)
self.Entry_Length_Right.grid(row = 3, column = 2, padx = 5, pady = 5)

米转...的代码:

as_meter = dict(mm=0.001, cm=0.01, inches=0.0254,feet=0.3048, yards=0.9144, meter=1.0,km=1000.0, miles=1609.344)
def update_length(self, *args):
    self.measurements.trace('w', self.update_length)
    self.measurements1.trace('w', self.update_length)
    self.Text_Length_Left.trace('w', self.update_length)
    try:
        v = float(self.Text_Length_Left.get())
    except ValueError:
        v = 0.0
        self.Text_Length_Left.set(str(v))
    m = v * self.as_meter[self.measurements.get()]
    r = m/self.as_meter[self.measurements1.get()]
    self.Text_Length_Right.set("{:.3e}".format(r))

我希望能够按回车键,程序会发挥它的魔力,让它在另一个输入框中显示计算,并与另一个输入框显示相同的过程。

感谢您的帮助!非常感谢。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    您正在寻找bind Enter 键(called "<Return>" by tkinter):

    self.Combobox_Length_Right.bind("<Return>",self. update_length)
    self.Combobox_Length_Right.bind("<Return>",self. update_length)
    

    【讨论】:

    • 感谢您的帮助,但出现错误:AttributeError: 'IntVar' object has no attribute 'bind'
    • 对不起,我的意思是self.Combobox_Length_Right 将编辑答案
    • 非常感谢你帮助我完成了我已经工作了四个月的项目,我非常感谢你。
    • 我必须使用self.Entry_Length_Right.bind("&lt;Return&gt;",self. update_length) self.Entry_Length_Left.bind("&lt;Return&gt;",self. update_length) 才能让它工作
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2015-02-10
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多