首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tix ComboBox导致python2.7崩溃

Tix ComboBox导致python2.7崩溃
EN

Stack Overflow用户
提问于 2011-02-18 17:33:11
回答 1查看 575关注 0票数 2

我一直在使用Tix创建一个comboBox,如果输入框是空的,它会导致间歇性崩溃。

我对Python很陌生,对GUI编程也很陌生,所以我一直用示例来教自己一些东西。

使用下面的示例代码时,您应该能够在输入框中输入一个值,或者从下拉菜单中选择form,但是如果您将条目字段保持为空并按go键,它将导致python崩溃。

代码语言:javascript
复制
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()

=========================崩溃详细信息:

代码语言:javascript
复制
  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()值。

代码语言:javascript
复制
self.combo = Tix.ComboBox(window, value =' ')
...
tkMessageBox.showinfo('info', self.combo['selection'].lstrip())

非常丑陋,但暂时阻止我崩溃;直到有更聪明的人能给我一个更好的答案。如果用户删除空间,然后按下“go”,就会再次造成崩溃!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-12 08:32:45

我不是Tix专家,但这应该可以解决问题:

代码语言:javascript
复制
tkMessageBox.showinfo('info', self.combo.entry.get())

在两行之间,我建议使用wxPython来学习GUI编程。这对我来说是个很好的学习环境。

代码语言:javascript
复制
import wx

class MainWin(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.combo = wx.ComboBox(self, choices=["Thing 1", "Thing 2"])      
        self.button = wx.Button(self, label="Go")
        self.button.Bind(wx.EVT_BUTTON, self.OnButton)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.combo, 0, wx.EXPAND)
        self.sizer.Add(self.button, 0, wx.EXPAND)
        self.SetSizerAndFit(self.sizer)     

        self.Show()

    def OnButton(self, e):
        wx.MessageBox(self.combo.GetValue())

app = wx.App(False)
main_win = MainWin(None)
app.MainLoop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5044572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档