从函数中获取变量
Get a variable from a function
在这段代码中,我想知道如何获取 rect
变量并像我尝试的那样在 Delete
方法中使用它。目前出现错误。
from tkinter import *
def createRect(event):
rect = w.create_rectangle(50, 25, 150, 75, fill="blue")
return rect
def Start(event):
print("Single Clicked")
createRect(event)
def Delete(event):
i = createRect(event)
print("Double Clicked")
w.delete(i.rect)
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()
frame = Button(root, text="delete/make")
frame.bind("<Double-1>", Delete)
frame.bind("<Button-1>", Start)
frame.pack()
root.mainloop()
一般来说,我建议不要使用全局变量,因为您对谁可以修改它们以及如何修改它们的控制较少。但是在这种情况下,主循环正在调用您的 Start
和 Delete
函数。您可以创建一个容器对象并在您的方法中使用它。
class MyRect:
def __init__(self):
self.rect = None
self.isSet = False
然后,在你的 tkinter 代码中,你可以像这样使用它:
myrect = MyRect()
def Start(event):
if not myrect.isSet:
print("Single Clicked")
myrect.rect = createRect(event)
myrect.isSet = True
def Delete(event):
if myrect.isSet:
print("Double Clicked")
w.delete(myrect.rect)
myrect.rect = None
myrect.isSet = False
您还可以通过这种方式处理用户双击或单击按钮 1 的次数。
如果您喜欢冒险,可以添加 __setattr__
和 __getattr__
方法来控制在不应该修改 rect 实例时发生的情况。
在这段代码中,我想知道如何获取 rect
变量并像我尝试的那样在 Delete
方法中使用它。目前出现错误。
from tkinter import *
def createRect(event):
rect = w.create_rectangle(50, 25, 150, 75, fill="blue")
return rect
def Start(event):
print("Single Clicked")
createRect(event)
def Delete(event):
i = createRect(event)
print("Double Clicked")
w.delete(i.rect)
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()
frame = Button(root, text="delete/make")
frame.bind("<Double-1>", Delete)
frame.bind("<Button-1>", Start)
frame.pack()
root.mainloop()
一般来说,我建议不要使用全局变量,因为您对谁可以修改它们以及如何修改它们的控制较少。但是在这种情况下,主循环正在调用您的 Start
和 Delete
函数。您可以创建一个容器对象并在您的方法中使用它。
class MyRect:
def __init__(self):
self.rect = None
self.isSet = False
然后,在你的 tkinter 代码中,你可以像这样使用它:
myrect = MyRect()
def Start(event):
if not myrect.isSet:
print("Single Clicked")
myrect.rect = createRect(event)
myrect.isSet = True
def Delete(event):
if myrect.isSet:
print("Double Clicked")
w.delete(myrect.rect)
myrect.rect = None
myrect.isSet = False
您还可以通过这种方式处理用户双击或单击按钮 1 的次数。
如果您喜欢冒险,可以添加 __setattr__
和 __getattr__
方法来控制在不应该修改 rect 实例时发生的情况。