首页 > 解决方案 > tkinter 中是否有一些用于返回键的新关键字?

问题描述

我正在制作一个计算器,我绑定了 = 按钮以返回按键,但它不起作用。我已将我的按钮绑定到一个相等的功能,也绑定到点击功能

def equal():
    if screenVal.get().isdigit():
        value = int(screenVal.get())
    else:
        try:
            value = eval(screenVal.get())
        except Exception:
            value = "Err"

    screenVal.set(value)
    screenEnt.update()


def click(event):
    global screenVal
    text = event.widget.cget("text")
    if text == "=":
        if screenVal.get().isdigit():
            value = int(screenVal.get())
        else:
            try:
                value = eval(screenVal.get())
            except Exception:
                value = "Err"

        screenVal.set(value)
        screenEnt.update()

    elif text == "C":
        screenVal.set("")
        screenEnt.update()
    else:
        screenVal.set(screenVal.get() + text)
        screenEnt.update()

    b = Button(frame, text="=",  padx=10, pady=10, font="consolas 15 bold", width=3, command=equal)
    b.pack(side=LEFT)
    b.bind('<Return>', click)

谁能帮忙?我正在 AMD 64 上开发 python 3.7.9

标签: pythontkinterpython-3.7bind

解决方案


import tkinter as tk

root=tk.Tk()

def equal():
    print('equal')

def click(event):
    print('click')

b = tk.Button(root, text="=",  padx=10, pady=10, font="consolas 15 bold", width=3, command=equal)
b.pack(side='left')
b.bind('<Return>', click)

root.mainloop()

如果您运行此脚本,该equal命令将按预期工作。您的问题似乎是,您无法执行return绑定。该事件仅在键盘焦点位于该按钮上时才会发生,请尝试按 Tab 直到按钮获得焦点。

一个解决方案可能是将其绑定到框架,甚至更好地绑定到窗口。就像下面的例子一样。

import tkinter as tk

root=tk.Tk()

def equal():
    print('equal')

def click(event):
    print('click')

b = tk.Button(root, text="=",  padx=10, pady=10, font="consolas 15 bold", width=3, command=equal)
b.pack(side='left')
root.bind('<Return>', click)

root.mainloop()

推荐阅读