使功能第一次使用Tkinter单击后只能运行一次吗?

杰克

在tkinter,python中,我试图创建一个程序,该程序涉及在画布上创建形状并单击按钮,从而不再创建其他形状。这是我的代码:

from tkinter import *

root = Tk()
canvas = Canvas(root)  # Creating Canvas
canvas.pack()

def create(event):
    x1, y1 = (event.x - 5), (event.y - 5)
    x2, y2 = (event.x + 5), (event.y + 5)         # Creates Rectangle Where Button Clicked
    canvas.create_rectangle(x1,y1,x2,y2,fill='red')

root.bind_all("<Button-1>", create)  # Binds Mouse Click Button


citybg = PhotoImage(file= r"example.png") 
citybgimage = canvas.create_image(50, 50, image=citybg) # Background for Canvas

我的问题是如何使矩形仅能一次创建一次,并且该create函数无法再执行。希望这个问题能得到很好的解释,我希望它能得到很好的回答。

多佐·希格斯(Dozon Higgs)

好吧,一个简单的解决方案(但不是那么漂亮)将是添加一个布尔标志,该标志在函数首次运行时将被设置为True。然后使用if语句返回,如果为True,则在create中不做任何事情。

像这样的东西(createRan-是那个布尔标志):

root = Tk()
canvas = Canvas(root)  # Creating Canvas
canvas.pack()
createRan = False


def create(event):
    if(createRan):
        return
    else:
        createRan=True
        x1, y1 = (event.x - 5), (event.y - 5)
        x2, y2 = (event.x + 5), (event.y + 5)         # Creates  Rectangle Where Button Clicked
        canvas.create_rectangle(x1,y1,x2,y2,fill='red')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章