编程自动循环

时间:2018-04-23 00:26:40

标签: python tkinter desktop-application

我很擅长编写代码并陷入困境。我使用python与tkinter模块。这是一个非常简单的程序,将C转换为F.现在我添加了一个GUI,它似乎工作正常。转换按预期工作。它在正确的框中显示所有信息。现在它当然还需要很多细节,但基础工作正常。然后我添加了“输入”#39;控制功能的关键,程序变得混乱。它现在不断循环,好像我不断点击转换按钮或“输入”。我似乎无法找到创建循环的位置以及如何正确终止循环。我已经尝试过“休息”了。在else语句之后。

    import tkinter

    window = tkinter.Tk()

    value = tkinter.Label(window, text='Please enter C\u00b0:',
                          bd=2, justify='left')
    value.grid(row=1, ipadx=7, ipady=2, sticky='e')


    value_print = tkinter.Label(window, text='F\u00b0 is:', bd=2,
                                justify='left')
    value_print.grid(row=2, ipadx=7, ipady=2, sticky='e')

    output = tkinter.IntVar()
    var = tkinter.IntVar()
    c_input = tkinter.Entry(window, textvariable=var, bd=2,
                            justify='left')
    c_input.grid(row=1, column=2, ipadx=7, ipady=2, sticky='w')


    def converter(c):
        f = (c*9/5+32)
        if c < -273.15:
            output.set('''Please enter a value over the lowest possible
            temperature(-273.15) that physical matter can reach.''')
            print(invalid)
        else:
            output.set(f)
            print(f)


    def print_con(event=None):
        c = var.get()
        print(converter(int(c)))


    enter = tkinter.Button(window, text='Convert', command=print_con)
    enter.grid(row=3, column=2, ipadx=7, ipady=2, sticky='w')
    window.bind('<Enter>', print_con)

    f_output = tkinter.Message(window, bd=2, textvariable=output,
                               justify='left')
    f_output.grid(row=2, column=2, ipadx=7, ipady=2, sticky='w')


    window.mainloop()

2 个答案:

答案 0 :(得分:1)

回车键在Tkinter中标记为<Return>

所以,只需改变这行代码:

window.bind('<Enter>', print_con)

进入这个:

window.bind('<Return>', print_con)

答案 1 :(得分:0)

只要鼠标进入或离开小部件,就会触发

<Enter>。如果您需要返回密钥,则需要使用<Return>