我一直在使用 Tix 创建一个组合框,如果输入框为空,它会导致间歇性崩溃。
我是 Python 新手,对 GUI 编程也很陌生,所以我一直在使用示例自学东西。
使用下面的示例代码时,您应该能够在输入框中输入一个值或从下拉菜单中选择,但是如果您将输入字段留空并按 go,它将导致 python 崩溃。
import Tix
import tkMessageBox
class App(object):
def __init__(self, window):
window.winfo_toplevel().wm_title("test")
self.window = window
self.combo = Tix.ComboBox(window)
self.combo.insert(Tix.END, 'thing1')
self.combo.insert(Tix.END, 'thing2')
self.combo.entry['state'] = "normal"
self.combo['editable'] = True
self.combo.pack()
button = Tix.Button(window)
button['text'] = "Go"
button['command'] = self.go
button.pack()
def go(self):
tkMessageBox.showinfo('info', self.combo['selection'])
if __name__ == '__main__':
root = Tix.Tk()
App(root)
root.mainloop()
========================== 崩溃详情:
Problem signature:
Problem Event Name: APPCRASH
Application Name: python2.7.exe
Application Version: 0.0.0.0
Application Timestamp: 4cfbf049
Fault Module Name: ntdll.dll
Fault Module Version: 6.1.7600.16385
Fault Module Timestamp: 4a5bdb3b
Exception Code: c0000005
Exception Offset: 0002e23e
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 2057
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
所以
A] 是不是这个例子做错了什么?
B]有更好的方法吗?
C] 我应该使用 Tix 吗?
我注意到有些人似乎回避了 Tix,只使用 Tkinter。是否有一个原因?我不应该使用 Tix 吗?
++++++++++++++++++++++++++++++++
好的,所以我设法通过添加 value =' ' 来解决这个问题,因此返回字符串不为空,然后在需要时使用 lstrip() 值。
self.combo = Tix.ComboBox(window, value =' ')
...
tkMessageBox.showinfo('info', self.combo['selection'].lstrip())
非常难看,但现在阻止我崩溃;直到更聪明的人能给我一个更好的答案。如果用户删除空间然后按“go”,它会再次导致崩溃!