繁体   English   中英

如何在Python Tkinter画布中隐藏多边形?

[英]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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM