如何在 Python Tkinter Canvas 中隐藏多边形?
How To Hide Polygons In Python Tkinter Canvas?
我的代码的目的是用三角形代替光标。但是,我需要一个解决方案来删除以前通过光标移动绘制的三角形。
这是我的原始代码:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10)
def Move(self):
self.Mousex = self.canvas.winfo_pointerx()
self.Mousey = self.canvas.winfo_pointery()
self.id = self.canvas.create_polygon(self.Mousex,self.Mousey,\
self.Mousex+10,self.Mousey,\
self.Mousex,self.Mousey-10,\
fill = 'red')
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()
我试过下面的代码,但是根本没有出现三角形。在下面的代码中,我插入了一个:
self.canvas.delete(self.id)
所以代码是:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10)
def Move(self):
self.Mousex = self.canvas.winfo_pointerx()
self.Mousey = self.canvas.winfo_pointery()
self.id = self.canvas.create_polygon(self.Mousex,self.Mousey,\
self.Mousex+10,self.Mousey,\
self.Mousex,self.Mousey-10,\
fill = 'red')
self.canvas.delete(self.id)
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()
Canvas 已经定义了一个 move
方法,您可以改用它:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10, fill='red')
self.Mousex = 0
self.Mousey = 0
def Move(self):
_new_x = self.canvas.winfo_pointerx()
_new_y = self.canvas.winfo_pointery()
self.canvas.move(self.id, _new_x - self.Mousex, _new_y - self.Mousey)
self.Mousex = _new_x
self.Mousey = _new_y
#self.canvas.delete(self.id)
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()
我的代码的目的是用三角形代替光标。但是,我需要一个解决方案来删除以前通过光标移动绘制的三角形。
这是我的原始代码:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10)
def Move(self):
self.Mousex = self.canvas.winfo_pointerx()
self.Mousey = self.canvas.winfo_pointery()
self.id = self.canvas.create_polygon(self.Mousex,self.Mousey,\
self.Mousex+10,self.Mousey,\
self.Mousex,self.Mousey-10,\
fill = 'red')
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()
我试过下面的代码,但是根本没有出现三角形。在下面的代码中,我插入了一个:
self.canvas.delete(self.id)
所以代码是:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10)
def Move(self):
self.Mousex = self.canvas.winfo_pointerx()
self.Mousey = self.canvas.winfo_pointery()
self.id = self.canvas.create_polygon(self.Mousex,self.Mousey,\
self.Mousex+10,self.Mousey,\
self.Mousex,self.Mousey-10,\
fill = 'red')
self.canvas.delete(self.id)
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()
Canvas 已经定义了一个 move
方法,您可以改用它:
from tkinter import*
tk = Tk()
tk.resizable(0,0)
tk.attributes('-topmost',True)
window = Canvas(width = 1300, height = 700, bg = 'black',\
highlightthickness=0, relief='ridge')
window.pack()
window.config(cursor='none')
class Cursor:
def __init__(self,canvas):
self.canvas = canvas
self.id = self.canvas.create_polygon(0,0,10,0,0,-10, fill='red')
self.Mousex = 0
self.Mousey = 0
def Move(self):
_new_x = self.canvas.winfo_pointerx()
_new_y = self.canvas.winfo_pointery()
self.canvas.move(self.id, _new_x - self.Mousex, _new_y - self.Mousey)
self.Mousex = _new_x
self.Mousey = _new_y
#self.canvas.delete(self.id)
Cursor1 = Cursor(window)
while 1:
tk.update_idletasks()
window.update()
Cursor1.Move()