python - Tkinter 矩形连接到 Keypress
问题描述
下面的程序在画布的中心绘制一个矩形。按下右箭头键时矩形应该变宽,按下左箭头键时矩形会变窄。
这是代码:
from tkinter import *
root = Tk()
canvas = Canvas(root, width=400, height=300, bg="#000000")
canvas.pack()
x1 = 150
y1 = 100
x2 = 250
y2 = 200
class ResizeRect:
def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.rect = canvas.create_rectangle(0,0,1,1)
def draw(self):
canvas.delete(self.rect)
self.rect = canvas.create_rectangle(x1, y1, x2, y2,
outline="#00B000", width=2)
def narrower(self):
self.x1 = self.x1 + 5
self.x2 = self.x2 - 5
def wider(self):
self.x1 = self.x1 - 5
self.x2 = self.x2 + 5
r = ResizeRect(150, 100, 250, 200)
r.draw()
def left(event):
r.narrower()
r.draw()
def right(event):
r.wider()
r.draw()
canvas.bind_all('<KeyPress-Left>', left)
canvas.bind_all('<KeyPress-Right>', right)
我的老师告诉我,我需要在draw函数的参数中添加'self'关键字,但我不知道他的意思。(我不能再问他了,因为他现在心情不好。)。任何帮助深表感谢。
解决方案
推荐阅读
- php - 为什么我不能使用 PHP 7 运行 shell 命令?
- jquery - 如何通过 jQuery 在先前添加的字段下方添加字段?
- python - 如何在 Python OpenCV 中缩小图像的物理尺寸
- c# - Mandrill 电子邮件发送错误:请输入一个数组
- vba - 在 Outlook 资源管理器中为邮件预览着色
- codeigniter-4 - 哎呀!我们似乎遇到了障碍。请稍后再试
- for-loop - 为什么调用 .then 的语句会自动从 for 循环中排除
- react-native - 如何在 react-native-webview 中清除 cookie 和缓存数据
- react-admin - 当我单击行时如何更改列表的行背景
- flutter - 当 InkWell/GestureDetector 溢出父级时,如何使它们可点击?