我只说西班牙语,我会用我可怜的英语写作,对不起。
我正在学习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
答案 0 :(得分:2)
使用self.choice1.Label
是错误的;使用self.choice1.StringSelection
在代码中替换它,您的代码就可以了!