Python 点击";取消“;在tkColorChooser对话框中,将导致错误

Python 点击";取消“;在tkColorChooser对话框中,将导致错误,python,tkinter,Python,Tkinter,我在linux下使用python 2.6(SUSE linux Enterprise Desktop 11(x86_64))。我测试了一些非常简单的代码: import tkColorChooser tkColorChooser.askcolor() 然后,如果单击“取消”,我总是会出现如下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/l

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

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 ""
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
askcolor中的文件“/usr/lib64/python2.6/lib-tk/tkColorChooser.py”,第62行
返回选择器(**选项).show()
文件“/usr/lib64/python2.6/lib tk/tkCommonDialog.py”,第50行,在show中
s=自修复结果(w,s)
文件“/usr/lib64/python2.6/lib tk/tkColorChooser.py”,第48行,在_fixresult中
r、 g,b=widget.winfo_rgb(结果)
winfo_rgb中的文件“/usr/lib64/python2.6/lib tk/Tkinter.py”,第786行
self.tk.call('winfo','rgb',self.\w,color))
_tkinter.TclError:未知的颜色名称“”

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

看看我所拥有的tkColorChooser.py版本(Python 2.6.4,Win32),它应该支持用户按
取消
(和其他预定义对话框一样):在布尔上下文中,当结果求值为
False
时,它确实应该不返回任何值

因此,一些奇怪的事情正在发生


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

文档中指出,如果单击“取消”,tkColorChooser将返回“无”。@Hongbo:您可能有Python 2.6.1或更低版本,这与您的bug在版本2.6.2中修复的情况非常相似(我刚刚查看了源代码)。你试过升级吗?@RaphaelISP:我有Python 2.6.0。@Hongbo:你有两个选择,然后:升级到Python>=2.6.2或使用适当的
try…except
语句对
tkColorChooser.askcolor()
进行环绕调用。@RaphaelSP:我想我会坚持使用try…except解决方案。非常感谢你的帮助。