Wx.choice在ubuntu中不起作用

时间:2009-06-01 00:17:04

标签: wxpython

我只说西班牙语,我会用我可怜的英语写作,对不起。

我正在学习wx.Python并且我在Windows XP中编写了一个小例子并且运行完美,但是ubuntu Jaunty中的相同代码运行不正常。

wx.Choice的字体显示为desfased且选项几乎不可见,当您选择一个时,Label始终为空。

hxxp://ricardonarvaja.info/WEB/OTROS/BOA%20CONSTRUCTOR%20PASO%20A%20PASO/instantanea1.png

enter code here
#Boa:Frame:Frame1

import wxversion
wxversion.select('2.8')
import wx

print wx.version()
def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1CHOICE1, wxID_FRAME1PANEL1, 
 wxID_FRAME1TEXTCTRL1, wxID_FRAME1TEXTCTRL2, 
] = [wx.NewId() for _init_ctrls in range(6)]

class Frame1(wx.Frame):
    def _init_sizers(self):
        # generated method, don't edit
        self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(473, 288), size=wx.Size(364, 190),
              style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
        self.SetClientSize(wx.Size(356, 156))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(356, 156),
              style=wx.TAB_TRAVERSAL)

        self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
              parent=self.panel1, pos=wx.Point(40, 16), size=wx.Size(100, 21),
              style=0, value=u'')
        self.textCtrl1.Bind(wx.EVT_SET_FOCUS, self.OnTextCtrl1SetFocus)

        self.textCtrl2 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL2, name='textCtrl2',
              parent=self.panel1, pos=wx.Point(40, 48), size=wx.Size(100, 21),
              style=0, value=u'')
        self.textCtrl2.Bind(wx.EVT_SET_FOCUS, self.OnTextCtrl2SetFocus)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'SUMAR',
              name='button1', parent=self.panel1, pos=wx.Point(140, 101),
              size=wx.Size(75, 23), style=0)
        self.button1.Center(wx.HORIZONTAL)
        self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
              id=wxID_FRAME1BUTTON1)

        self.choice1 = wx.Choice(choices=['suma', 'resta', 'mult'],
              id=wxID_FRAME1CHOICE1, name='choice1', parent=self.panel1,
              pos=wx.Point(160, 40), size=wx.Size(146, 21), style=0)
        self.choice1.Bind(wx.EVT_CHOICE, self.OnChoice1Choice,
              id=wxID_FRAME1CHOICE1)

        self._init_sizers()

    def __init__(self, parent):
        self._init_ctrls(parent)

    # XXX Este codigo esta sin terminar
    def OnButton1Button(self, event):

        print self.choice1.Label
        try:
            if self.choice1.Label=='suma':
                suma=int(self.textCtrl1.Value)+int(self.textCtrl2.Value)
                self.button1.Label='Suma = ' + str(suma)
            if self.choice1.Label=='resta':
                suma=int(self.textCtrl1.Value)- int(self.textCtrl2.Value)
                self.button1.Label='Resta = ' + str(suma)
            if self.choice1.Label=='mult':
                suma=int(self.textCtrl1.Value) * int(self.textCtrl2.Value)
                self.button1.Label='Mult = ' + str(suma)
        except:
            self.button1.Label='Error tipo de datos'
            self.textCtrl1.Value=''
            self.textCtrl2.Value=''

        event.Skip()

    def OnTextCtrl1SetFocus(self, event):
        self.textCtrl1.Value=''
        print self.choice1.Label
        if self.choice1.Label=='suma':
            self.button1.Label='SUMAR'
        if self.choice1.Label=='resta':
            self.button1.Label='RESTAR'
        if self.choice1.Label=='mult':
            self.button1.Label='MULT'
        event.Skip()

    def OnTextCtrl2SetFocus(self, event):
        self.textCtrl2.Value=''
        print self.choice1.Label
        if self.choice1.Label=='suma':
            self.button1.Label='SUMAR'
        if self.choice1.Label=='resta':
            self.button1.Label='RESTAR'
        if self.choice1.Label=='mult':
            self.button1.Label='MULT'
        event.Skip()

    def OnChoice1Choice(self, event):

        if self.choice1.Label=='suma':
            self.button1.Label='SUMAR'
        if self.choice1.Label=='resta':
            self.button1.Label='RESTAR'
        if self.choice1.Label=='mult':
            self.button1.Label='MULT'

        event.Skip()


if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = create(None)
    frame.Show()

    app.MainLoop()

打印 self.choice1.Label 始终在ubuntu中打印EMPTY,在Windows中打印suma,resta或mul,wx.choice的其中一个选项,预期效果如何。

ricnar

1 个答案:

答案 0 :(得分:2)

使用self.choice1.Label是错误的;使用self.choice1.StringSelection在代码中替换它,您的代码就可以了!