如何检测 python window 中的键盘按下?
How to detect keyboard press in python window?
from tkinter import *
root = Tk()
root.title('FAS')
root.geometry("600x650")
#root.attributes('-alpha', 0.5)
root.wm_attributes("-topmost", True)
root.lift()
root.wm_attributes("-transparentcolor", "grey")
#background image
bg = PhotoImage(file="3MtoCW.png")
#this is to make the background image transparents
red_frame = Frame(root, width=600, height=650, bg='grey')
red_frame.place(x=0, y=0)
my_label = Label(root, image=bg, bg='grey')
my_label.place(x=0, y=0)
root.mainloop()
我希望当我在 tkinter window 中按下某个键时,原始背景图像“3MtoCW.png”将切换为名为“3MswCW.png”的新背景图像
我该怎么做?
您需要创建一个函数来在按键时更改 Label 的配置并将此函数绑定到事件
下面应该可以解决问题
from tkinter import *
root = Tk()
root.title('FAS')
root.geometry("600x650")
# root.attributes('-alpha', 0.5)
root.wm_attributes("-topmost", True)
root.lift()
root.wm_attributes("-transparentcolor", "grey")
bg_images = ["3MtoCW.jpg", "3MswCW.jpg"]
idx = 0
# background image
bg = PhotoImage(file="3MtoCW.png")
red_frame = Frame(root, width=600, height=650, bg='red')
red_frame.place(x=0, y=0)
my_label = Label(root, image=bg, bg='grey')
my_label.place(x=0, y=0)
def keypress(e):
print("called")
global idx
idx = (idx + 1) % 2
my_label.config(image=PhotoImage(file=bg_images[idx]))
red_frame.bind("<KeyPress>", keypress)
red_frame.pack()
red_frame.focus_set()
root.mainloop()
您想将一个事件绑定到根。这是您可以“查找”的事件列表
https://www.python-course.eu/tkinter_events_binds.php
bg = PhotoImage(file="3MtoCW.png")
root.bind('<KeyPress>', lambda: bg.configure(file="3MswCW.png")
或者不使用 lambda,您可以在新函数中执行此操作。确保在绑定事件时省略括号,否则它将调用函数而不是指向它。
def changeimage(event=None):
bg.configure(file="3MswCW.png")
root.bind('<KeyPress>', changeimage)
from tkinter import *
root = Tk()
root.title('FAS')
root.geometry("600x650")
#root.attributes('-alpha', 0.5)
root.wm_attributes("-topmost", True)
root.lift()
root.wm_attributes("-transparentcolor", "grey")
#background image
bg = PhotoImage(file="3MtoCW.png")
#this is to make the background image transparents
red_frame = Frame(root, width=600, height=650, bg='grey')
red_frame.place(x=0, y=0)
my_label = Label(root, image=bg, bg='grey')
my_label.place(x=0, y=0)
root.mainloop()
我希望当我在 tkinter window 中按下某个键时,原始背景图像“3MtoCW.png”将切换为名为“3MswCW.png”的新背景图像 我该怎么做?
您需要创建一个函数来在按键时更改 Label 的配置并将此函数绑定到事件
下面应该可以解决问题
from tkinter import *
root = Tk()
root.title('FAS')
root.geometry("600x650")
# root.attributes('-alpha', 0.5)
root.wm_attributes("-topmost", True)
root.lift()
root.wm_attributes("-transparentcolor", "grey")
bg_images = ["3MtoCW.jpg", "3MswCW.jpg"]
idx = 0
# background image
bg = PhotoImage(file="3MtoCW.png")
red_frame = Frame(root, width=600, height=650, bg='red')
red_frame.place(x=0, y=0)
my_label = Label(root, image=bg, bg='grey')
my_label.place(x=0, y=0)
def keypress(e):
print("called")
global idx
idx = (idx + 1) % 2
my_label.config(image=PhotoImage(file=bg_images[idx]))
red_frame.bind("<KeyPress>", keypress)
red_frame.pack()
red_frame.focus_set()
root.mainloop()
您想将一个事件绑定到根。这是您可以“查找”的事件列表 https://www.python-course.eu/tkinter_events_binds.php
bg = PhotoImage(file="3MtoCW.png")
root.bind('<KeyPress>', lambda: bg.configure(file="3MswCW.png")
或者不使用 lambda,您可以在新函数中执行此操作。确保在绑定事件时省略括号,否则它将调用函数而不是指向它。
def changeimage(event=None):
bg.configure(file="3MswCW.png")
root.bind('<KeyPress>', changeimage)