代码之家  ›  专栏  ›  技术社区  ›  HongboZhu

单击tkcolorchooser对话框中的“取消”会导致错误

  •  1
  • HongboZhu  · 技术社区  · 15 年前

    我在Linux(SUSE Linux Enterprise Desktop 11(x86_64))下使用python 2.6。我测试了一些非常简单的代码:

    import tkColorChooser
    tkColorChooser.askcolor()
    

    然后,如果我单击“取消”,我总是会得到如下错误:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib64/python2.6/lib-tk/tkColorChooser.py", line 62, in askcolor
        return Chooser(**options).show()
      File "/usr/lib64/python2.6/lib-tk/tkCommonDialog.py", line 50, in show
        s = self._fixresult(w, s)
      File "/usr/lib64/python2.6/lib-tk/tkColorChooser.py", line 48, in _fixresult
        r, g, b = widget.winfo_rgb(result)
      File "/usr/lib64/python2.6/lib-tk/Tkinter.py", line 786, in winfo_rgb
        self.tk.call('winfo', 'rgb', self._w, color))
    _tkinter.TclError: unknown color name ""
    

    我使用tkcolorchooser有更复杂的代码,如果我在“颜色选择器”对话框中单击“取消”,就会出现同样的错误。我想我能抓住这个错误。但是,tkcolorchooser是这样设计的吗?有没有其他更整洁的方法来解决这个问题?谢谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   Raphaël Saint-Pierre    14 年前

    查看我拥有的tkcolorchooser.py版本(python 2.6.4,win32),它应该支持用户按 cancel (和其他预定义的对话框一样):当结果评估为 False 在布尔上下文中。

    因此,发生了一些奇怪的事情。

    编辑:正如我在评论中指出的,这确实是一个在版本2.6.2中修复的错误。