【问题标题】:How To Hide Polygons In Python Tkinter Canvas?如何在 Python Tkinter Canvas 中隐藏多边形?
【发布时间】:2018-02-01 01:47:29
【问题描述】:

我的代码的目的是让一个三角形替换一个光标。但是,我需要一个解决方案来删除之前通过光标移动绘制的三角形。

这是我的原始代码:

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()

【问题讨论】:

    标签: python tkinter mouse


    【解决方案1】:

    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()
    

    【讨论】:

      猜你喜欢
      • 2022-10-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 2019-12-15
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多