def key_press(event): print("Key Pressed:", event.keysym) mywin.bind("<Key>", key_press) "<Key>"中写什么?
时间: 2023-12-31 15:06:42 浏览: 196
在 `"<Key>"` 中,您可以指定任何键盘按键的名称来监听该按键的事件。例如,如果您只想监听字母键盘的按键事件,您可以使用 `"<Key>"`。如果您只想监听特定的按键事件,例如监听空格键的按下事件,您可以使用 `"<space>"`。
`"<Key>"` 是一个通配符,它表示要监听所有键盘按键的事件。当用户按下任何键时,该事件将被触发。
您可以根据需要替换 `"<Key>"` 为其他有效的键盘按键名称。例如,`"<a>"` 表示监听 "a" 键的事件,`"<Enter>"` 表示监听回车键的事件等。
请注意,键盘按键名称是区分大小写的。
相关问题
class HeroPlane(pygame.sprite.Sprite): def __init__(self,screen): pygame.sprite.Sprite.__init__(self) #初始化精灵类 self.image1 = pygame.image.load("D:/PYTHON/pointgame/hero1.jpg") self.rect = self.image1.get_rect() #获取图片大小 self.rect.topleft = [300,700] #获取飞机左上角坐标 self.speed = 10 # 飞机速度 self.screen = screen self.screen_rect = self.screen.get_rect() self.bullets = pygame.sprite.Group() #group方法 类似列表 def key_control(self): # 键盘输入 key_pressed = pygame.key.get_pressed() if key_pressed[K_w] or key_pressed[K_UP]: self.rect.top -= self.speed if key_pressed[K_s] or key_pressed[K_DOWN]: self.rect.bottom += self.speed if key_pressed[K_a] or key_pressed[K_LEFT]: self.rect.left -= self.speed if key_pressed[K_d] or key_pressed[K_RIGHT]: self.rect.right += self.speed if key_pressed[K_SPACE]: bullet = Bullet(self.screen,self.rect.left,self.rect.top) #飞机参数调用 self.bullets.add(bullet) #把子弹放入列表 if self.rect.left < 0:# 控制player不能离开屏幕 self.rect.left = 0 elif self.rect.right > self.screen.rect.right: self.rect.right = self.screen.rect.right 错误是 File "D:/PYTHON/pointgame/pointgame.py", line 124, in <module> main() File "D:/PYTHON/pointgame/pointgame.py", line 117, in main player.key_control() File "D:/PYTHON/pointgame/pointgame.py", line 33, in key_control elif self.rect.right > self.screen.rect.right: AttributeError: 'pygame.surface.Surface' object has no attribute 'rect'怎么修改
问题出在第21行,应该将`self.screen_rect = self.screen.get_rect()`改为`self.screen_rect = self.screen.get_rect()`,即将`screen`改为`screen_rect`。代码如下:
```
class HeroPlane(pygame.sprite.Sprite):
def __init__(self,screen):
pygame.sprite.Sprite.__init__(self) #初始化精灵类
self.image1 = pygame.image.load("D:/PYTHON/pointgame/hero1.jpg")
self.rect = self.image1.get_rect() #获取图片大小
self.rect.topleft = [300,700] #获取飞机左上角坐标
self.speed = 10 # 飞机速度
self.screen = screen
self.screen_rect = self.screen.get_rect()
self.bullets = pygame.sprite.Group() #group方法 类似列表
def key_control(self):
# 键盘输入
key_pressed = pygame.key.get_pressed()
if key_pressed[K_w] or key_pressed[K_UP]:
self.rect.top -= self.speed
if key_pressed[K_s] or key_pressed[K_DOWN]:
self.rect.bottom += self.speed
if key_pressed[K_a] or key_pressed[K_LEFT]:
self.rect.left -= self.speed
if key_pressed[K_d] or key_pressed[K_RIGHT]:
self.rect.right += self.speed
if key_pressed[K_SPACE]:
bullet = Bullet(self.screen,self.rect.left,self.rect.top) #飞机参数调用
self.bullets.add(bullet) #把子弹放入列表
if self.rect.left < 0:# 控制player不能离开屏幕
self.rect.left = 0
elif self.rect.right > self.screen_rect.right: # 修改这行
self.rect.right = self.screen_rect.right
```
这样应该就能解决报错问题了。
import sys import tkinter as Tk import matplotilib from numpy import arange,sin,pi from matplotlib.backends,backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2TkAgg from matplotlib.figure import Figure matplotlib.use('TkAgg') root=Tk.Tk() root.title("我们测试-matplotlib in Tk") #设置图形尺寸和质量 f=Figure(figsize=(5,4),dpi=100) a=f.add_subplot(111) t=arange(0.0,3,0.01) s=sin(2*pi*t) #绘制图形 a.plot(t.s) #吧绘制的图形显示到tkinter窗口上 canvas=FigureCanvasTkAgg(f,master=root) canvas.show() canvas.get_tk_widget().pack(side=Tk.TOP,fill=Tk.BOTH,expand=1) #把matplotlib绘制图形的导航工具栏显示到tkinter窗口上 toolbar=NavigationToolbar2TkAgg(canvas,root) toolbar.update() canvas._tkcanvas.pack(side=Tk.TOP,fill=Tk.BOTH,expand=1) #定义并绑定键盘事件处理函数 def on_key_event(event): print('you pressed %s'% event.keys) key_press_handler(event,canvas,toolbar) canvas.mpl_connect('key_press_event',on_key_event) #按钮单击事件处理函数 def quit(): root.quit() root.destroy() button=Tk.Button(master=root,text='Quit',command=quit) button=pack(side=Tk.BOTTOM) Tk.mainloop()
这段代码中有一些错误和拼写错误。首先,`matplotlib.backends` 应该是 `matplotlib.backends.backend_tkagg`。然后,`plot` 函数应该是 `plot(t, s)` 而不是 `plot(t.s)`。此外,在调用 `button.pack(side=Tk.BOTTOM)` 之前,应该是 `button.pack(side=Tk.BOTTOM)` 而不是 `button=pack(side=Tk.BOTTOM)`。以下是修改后的代码:
```python
import sys
import tkinter as Tk
import matplotlib
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
matplotlib.use('TkAgg')
root = Tk.Tk()
root.title("我们测试-matplotlib in Tk")
# 设置图形尺寸和质量
f = Figure(figsize=(5, 4), dpi=100)
a = f.add_subplot(111)
t = arange(0.0, 3, 0.01)
s = sin(2 * pi * t)
# 绘制图形
a.plot(t, s)
# 把绘制的图形显示到tkinter窗口上
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
# 把matplotlib绘制图形的导航工具栏显示到tkinter窗口上
toolbar = NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
# 定义并绑定键盘事件处理函数
def on_key_event(event):
print('you pressed %s' % event.keys)
key_press_handler(event, canvas, toolbar)
canvas.mpl_connect('key_press_event', on_key_event)
# 按钮单击事件处理函数
def quit():
root.quit()
root.destroy()
button = Tk.Button(master=root, text='Quit', command=quit)
button.pack(side=Tk.BOTTOM)
Tk.mainloop()
```
阅读全文
相关推荐

















