Wx.choice在ubuntu中不起作用

时间:2022-07-29 07:13:47

I speak only spanish, i will try to write in my poor english, sorry.

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

I'm learning wx.Python and i write a small example in Windows XP and run perfect, but the same code in ubuntu Jaunty don't work well.

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

The fonts of wx.Choice appear desfased and the options are barely visible, when you chosee one, the Label is always empty.

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()

The print self.choice1.Label always print EMPTY in ubuntu, and in Windows print suma, resta or mul, one of the options of the wx.choice, how expected.

print self.choice1.Label总是在ubuntu中打印EMPTY,在Windows中打印suma,resta或mul,这是wx.choice的一个选项,如何预期。

ricnar

1 个解决方案

#1


It's an error to use self.choice1.Label; replace it throughout your code with self.choice1.StringSelection and your code works!

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

#1


It's an error to use self.choice1.Label; replace it throughout your code with self.choice1.StringSelection and your code works!

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