隐藏错误关闭Toplevel窗口Python 3 Canvas

时间:2016-11-06 03:16:27

标签: python-3.x tkinter timer

不知道对此有何评论。但是,没关系,我自己解决了。

花了一段时间才发现Python真的很草率,当你完全破坏这个过程时会让计时器继续运行。过了一会儿,当它从计时器出来时你会爆炸,无处可去。这是一件非常基本的事情。你在毁灭行动中自己清理干净。 Python没有。

我能够在保持主窗口运行的同时打开和关闭我的顶层窗口,但是当我关闭子窗口时,我收到一条大而神秘的错误消息。当我通过X或子窗口中的已定义按钮关闭它时,会发生这种情况。如果我注释掉计时器事件(self.ater),则不会出现错误消息。但我必须要更新表格。

下一个计时器弹出时出现错误消息。它没有被破坏和流行,但是无处可去。

我无法使错误消息显示正确。尽我所能。

这是错误消息块,然后是创建和关闭子窗口的代码。

Tkinter回调中的异常

追踪(最近一次呼叫最后一次):

文件" /usr/lib/python3.4/tkinter/ init .py",第1536行,致电     return self.func(* args)

文件" /usr/lib/python3.4/tkinter/ init .py",第585行,在callit中     FUNC(*参数)

文件" / home / pi / IltiShares / @Mikes文件/ @Python3源/ GPS数据显示11-02-2016.py",第630行,在UpdateSky中 t_canvas.itemconfig(zz,text = str(self.counter))

文件" /usr/lib/python3.4/tkinter/ init .py",第2419行,在itemconfigure中     return self._configure((' itemconfigure',tagOrId),cnf,kw)

文件" /usr/lib/python3.4/tkinter/ init .py",第1313行,在_configure中     self.tk.call(_flatten((self._w,cmd))+ self._options(cnf)) _tkinter.TclError:无效的命令名称" .1959370864.1959118928.1959118192.1959118800"

def ShowSky(self):

  global t_canvas
  global zz
  fontsize   = 8
  labelwidth = 15
  textwidth  = 17

  self.counter += 1
  t = Toplevel(self) 
  t.wm_title("Sky Map or SV's") 

  frame2 = Frame(t)
  frame2.config(height = 400, width = 400) # These are pixels
  frame2.config(relief = RIDGE)
  frame2.pack(side = LEFT, anchor= 'ne')

  t_canvas = Canvas(frame2, height = 300, width = 300, borderwidth = 2,
                     bg= '#b3ffff', relief = GROOVE)
  t_canvas.pack()

  self.waiting = StringVar()
  self.waiting.set('.')
  zz = t_canvas.create_text(50, 50, text = '01')
  Button(frame2, text='Close', width = 10, bg = '#FFc0c0',  command=t.destroy).pack()
  self.after(1000, self.UpdateSky)
pass

def UpdateSky(self):
  global t_canvas
  global zz
  self.counter += 1
  # Test movement and text change.
  t_canvas.itemconfig(zz, text=str(self.counter))
  t_canvas.coords(zz,self.counter,60)

  self.after(8000, self.UpdateSky)
pass

0 个答案:

没有答案