Tkinter矩形连接到按键

2024-06-25 23:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的程序在画布的中心绘制一个矩形。按下右箭头键时,矩形应变宽,按下左箭头键时,矩形应变窄

代码如下:

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'关键字,但我不知道他的意思。(我不能再问他了,因为他现在心情不好。)。非常感谢您的帮助


Tags: rectselfdefcreaterootwidthcanvasx1