Окно Tkinter зависает после увеличения ширины строкиPython

Программы на Python
Anonymous
Окно Tkinter зависает после увеличения ширины строки

Сообщение Anonymous »

Окно Tkinter зависает после увеличения ширины строки. Я пробовал несколько раз, и экран всегда зависает. если я использую меньшую ширину, это работает. однако толщина некоторых линий отличается друг от друга.
если для параметра «default_object_width» установлено меньшее значение, это работает.
import tkinter as tk

def create_circle(x, y, r, canvas): #center coordinates, radius
x0 = x - r
y0 = y - r
x1 = x + r
y1 = y + r
return canvas.create_oval(x0, y0, x1, y1)

class MainProgram:

default_object_width = 5
default_object_fill_color = "black"
default_object_selection_width = 4
default_object_selection_color = "red"

def __init__(self, root):
self.root = root
self.canvas = tk.Canvas(width = 400, height = 400, bg = "white")
self.canvas.pack()

point_list = (20,20), (50,75), (75,100), (100,125), (125,60)
point = 0
while point < len(point_list):
startpoint = point_list[point]
point = point + 1
if point < len(point_list):
endpoint = point_list[point]
self.canvas.create_line(startpoint, endpoint, tags="object", fill=self.default_object_fill_color, width = self.default_object_width)
create_circle(endpoint[0], endpoint[1], 5, self.canvas)
startpoint = endpoint

# Bind mouse events
self.canvas.tag_bind("object", "", self.on_enter)
self.canvas.tag_bind("object", "", self.on_leave)

def on_enter(self, event):
# Get the current color of the line
self.current_color = self.canvas.itemcget("object", "fill")
self.current_width = self.canvas.itemcget("object", "width")
# Change the color to red
self.canvas.itemconfig(tk.CURRENT, fill= self.default_object_selection_color, width = self.default_object_selection_width)

def on_leave(self, event):
# Restore the original color
self.canvas.itemconfig(tk.CURRENT, fill=self.current_color, width = self.current_width)

if __name__ == "__main__":
root = tk.Tk()
app = MainProgram(root)
root.mainloop()


Подробнее здесь: https://stackoverflow.com/questions/790 ... f-the-line

Вернуться в «Python»