tkinter 同时使用两个键
tkinter using two keys at the same time
所以tkinker一次只能使用一个key。
在这个例子中,我不能说同时向左和向上移动。
如果我愿意,我会怎么做?
import tkinter
root = tkinter.Tk()
root.title('test')
c= tkinter.Canvas(root, height=300, width=400)
c.pack()
body = c.create_oval(100, 150, 300, 250, fill='green')
def key(event):
OnKeyDown(event.char)
print(event.char)
def MoveLeft(evenr)
c.move(body, -10, 0)
def MoveRight(event):
c.move(body, 10, 0)
def MoveUp(event):
c.move(body, 0, 10)
def MoveDown(event):
c.move(body, 0, -10)
root.bind('<KeyPress-Left>', MoveLeft)
root.bind('<KeyPress-Right>', MoveRight)
root.bind('<KeyPress-Up>', MoveUp)
root.bind('<KeyPress-Down>', MoveDown)
就我个人而言,我也希望不必 "bind" 我的功能键以及我也想使用这些键来执行其他操作(即:如果我按住 shift 和同时打开)当你预分配两个键或同时按住两个键时,Tinker 能识别吗?
像这样:
from Tkinter import *
root = Tk()
var = StringVar()
a_label = Label(root,textvariable = var ).pack()
history = []
def keyup(e):
print e.keycode
if e.keycode in history :
history.pop(history.index(e.keycode))
var.set(str(history))
def keydown(e):
if not e.keycode in history :
history.append(e.keycode)
var.set(str(history))
frame = Frame(root, width=200, height=200)
frame.bind("<KeyPress>", keydown)
frame.bind("<KeyRelease>", keyup)
frame.pack()
frame.focus_set()
root.mainloop()
不要忘记toggle keys
因为有点混血。
所以tkinker一次只能使用一个key。 在这个例子中,我不能说同时向左和向上移动。 如果我愿意,我会怎么做?
import tkinter
root = tkinter.Tk()
root.title('test')
c= tkinter.Canvas(root, height=300, width=400)
c.pack()
body = c.create_oval(100, 150, 300, 250, fill='green')
def key(event):
OnKeyDown(event.char)
print(event.char)
def MoveLeft(evenr)
c.move(body, -10, 0)
def MoveRight(event):
c.move(body, 10, 0)
def MoveUp(event):
c.move(body, 0, 10)
def MoveDown(event):
c.move(body, 0, -10)
root.bind('<KeyPress-Left>', MoveLeft)
root.bind('<KeyPress-Right>', MoveRight)
root.bind('<KeyPress-Up>', MoveUp)
root.bind('<KeyPress-Down>', MoveDown)
就我个人而言,我也希望不必 "bind" 我的功能键以及我也想使用这些键来执行其他操作(即:如果我按住 shift 和同时打开)当你预分配两个键或同时按住两个键时,Tinker 能识别吗?
像这样:
from Tkinter import *
root = Tk()
var = StringVar()
a_label = Label(root,textvariable = var ).pack()
history = []
def keyup(e):
print e.keycode
if e.keycode in history :
history.pop(history.index(e.keycode))
var.set(str(history))
def keydown(e):
if not e.keycode in history :
history.append(e.keycode)
var.set(str(history))
frame = Frame(root, width=200, height=200)
frame.bind("<KeyPress>", keydown)
frame.bind("<KeyRelease>", keyup)
frame.pack()
frame.focus_set()
root.mainloop()