Tkinter中Canvas无法绘制直线问题求助(附代码)
Tkinter中Canvas无法绘制直线问题求助(附代码)
大家好,我是编程新手,最近遇到个Tkinter的小难题:我想实现按住鼠标左键时在Canvas上绘制直线的功能,之前在Window类外的单独文件里这么写是能正常工作的,但把代码移到类里面之后就失效了。不过我加的print语句显示相关方法确实都被触发了,这就让我搞不清问题出在哪了😅。
能不能麻烦各位大佬帮我看看问题所在,最好能给个修改后的示例代码呀?谢谢大家的帮助!
import tkinter as tk size = [960,800] line_id = None line_points = [] line_options = {} class Window(tk.Frame): def __init__(self): tk.Frame.__init__(self) self.master.title("Calcul mental") self.master.minsize(size[0],size[1]) self.grid(sticky=tk.E+tk.W+tk.N+tk.S) top=self.winfo_toplevel() top.rowconfigure(0, weight=1) top.columnconfigure(0, weight=1) global line_id, line_points, line_options self.canvas = tk.Canvas() self.bind('<Button-1>', self.set_start) self.bind('<B1-Motion>', self.draw_line) self.bind('<ButtonRelease-1>', self.end_line) self.bind('<Button-3>', self.clear_line) def draw_line(self,event): global line_id,line_points,line_options print("draw") line_points.extend((event.x, event.y)) line_id = self.canvas.create_line(line_points, **line_options,tags="draw") def set_start(self,event): global line_points print("start") line_points.extend((event.x, event.y)) def end_line(self,event=None): global line_id print('end') line_points.clear() line_id = None def clear_line(self,event): print("clear line") self.canvas.delete("draw") Window().mainloop()
备注:内容来源于stack exchange,提问作者jkbfdgb
相关产品推荐
相关产品推荐

