我理解如何将键绑定在一个简单的框架上,但由于我以不同的方式构建我的应用程序,我似乎无法弄清楚如何绑定返回键以按下按钮或运行按钮所界定的功能。我一直在网站上搜索其他人的类似问题,但我找不到与我类似的问题。
我已经淡化了我的其余代码并将其放在下面:
import tkinter as tk
from tkinter import *
class POS(tk.Tk):
def __init__(self,*args,**kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side = "top", fill = "both", expand = True)
container.grid_rowconfigure(0, weight = 1)
container.grid_columnconfigure(0, weight = 1)
self.frames = {}
for F in (ErrorPage, MainPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column = 0, sticky = "nsew")
self.show_frame(MainPage)
def show_frame(self,cont):
frame = self.frames[cont]
frame.tkraise()
class MainPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
frame = tk.Frame(self)
frame.pack(fill = BOTH)
button = Button(frame, text = "OK", command = self.bindHello)
button.pack(pady=5, padx=10)
frame.bind("<Return>", self.bindHello)
self.bind("<Return>", self.bindHello)
def bindHello(self, event=None):
print("HELLO1")
#Yes this doesn't do anything but I need it for the frame container as set before
class ErrorPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
frame = tk.Frame(self)
frame.pack(fill = BOTH)
button = Button(frame, text = "OK", command = self.bindHello)
button.pack(pady=5, padx=10)
frame.bind("<Return>", self.bindHello)
def bindHello(self, event=None):
print("HELLO2")
app = POS()
app.mainloop()
简单按钮绑定我原本打算如下工作:
from tkinter import *
master = Tk()
def callback(event=None):
print("Hello " + entry.get())
entry = StringVar()
e = Entry(master, textvariable = entry, width = 15)
e.pack()
b = Button(master, text="OK", command = callback)
b.pack()
master.bind("<Return>", callback)
mainloop()
我只想像上面那样有一个简单的按钮绑定,但我似乎无法为我的主程序找到工作方式。我认为这是由于我构建应用程序的方式,但我并不完全确定。