Tixを使用してコンボボックスを作成してきましたが、入力ボックスを空のままにすると断続的にクラッシュします。
私はPythonに不慣れで、GUIプログラミングに非常に慣れていないので、例を使って自分自身に何かを教えてきました。
次のサンプルコードを使用すると、入力ボックスに値を入力するか、ドロップダウンメニューから選択できるはずですが、入力フィールドを空のままにして[移動]を押すと、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())
非常に醜いですが、今のところクラッシュするのを防ぎます。賢い人が私にもっと良い答えを与えることができるまで。ユーザーがスペースを削除してから「移動」を押すと、再びクラッシュが発生します。