2012-02-04 126 views
1

由於某種原因,我無法更新第二個標籤。我通過詢問輸入並打印出字符串來測試它,並且它工作正常,所以我顯然沒有正確書寫標籤更新功能。有任何想法嗎?爲什麼我的第二個標籤沒有更新?

import wx 
import time 


class LeftPanel(wx.Panel): 
    def __init__(self, parent, id): 
     wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN) 
     self.text = parent.GetParent().rightPanel.text 
     self.text_2 = parent.GetParent().rightPanel.text_2 
     button1 = wx.Button(self, -1, 'Count', (10, 10)) 
     button2 = wx.Button(self, -1, 'Countdown', (10, 60)) 
     button3 = wx.Button(self, -1, 'Action', (10, 110)) 
     self.Bind(wx.EVT_BUTTON, self.OnPlus, id=button1.GetId()) 
     self.Bind(wx.EVT_BUTTON, self.OnMinus, id=button2.GetId()) 
     self.Bind(wx.EVT_BUTTON, self.button_Pressed, id=button3.GetId()) 
     self.timed_Out = 1  


    def OnPlus(self, event): 
     value = 1 
     for t in range(50): 
      value = value + 1 
      time.sleep(1) 
      wx.Yield() 
      self.text.SetLabel(str(value)) 

    def OnMinus(self, event): 

     value = 60 
     for t in range(value): 
      value = value - 1 
      time.sleep(1) 
      wx.Yield() 
      self.text.SetLabel(str(value/60) + ':' + str(value%60)) 

     self.timed_Out = 0 
     self.text_2.SetLabel(str('End o\'line.')) 

    def button_Pressed(self, event): 
     if self.timed_Out == 1: 
      if self.text_2 == 'First': 
       self.text_2.SetLabel('Second') 

      elif self.text_2 == 'Second': 
       self.text_2.SetLabel('First') 


class RightPanel(wx.Panel): 
    def __init__(self, parent, id): 
     wx.Panel.__init__(self, parent, id, style=wx.BORDER_SUNKEN) 
     self.text = wx.StaticText(self, -1, '0', (10,60)) 
     self.text_2 = wx.StaticText(self,-1,'First',(10, 120)) 

class Communicate(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(600, 200)) 
     panel = wx.Panel(self, -1) 
     self.rightPanel = RightPanel(panel, -1) 
     leftPanel = LeftPanel(panel, -1) 
     hbox = wx.BoxSizer() 
     hbox.Add(leftPanel, 1, wx.EXPAND | wx.ALL, 4) 
     hbox.Add(self.rightPanel, 1, wx.EXPAND | wx.ALL, 5) 
     panel.SetSizer(hbox) 
     self.Centre() 
     self.Show(True) 



app = wx.App() 
Communicate(None, -1, 'widgets communicate') 
app.MainLoop() 

回答

1

button_Pressed,你與"First""Second"平等測試self.text_2,但text_2StaticText對象,而不是字符串,所以測試無法正常工作。試試這個:

if self.text_2.GetLabelText() == 'First': 
+0

好的......我只嘗試了Get()方法lastnight(這是我唯一知道的Get方法)。我認爲self.text_2會像其他賦予值的變量一樣處理。 a = 2如果a == 2:print(a)多謝先生或女士。 :) – JoryRFerrell 2012-02-05 18:16:09

+0

@JoryRFerrell這是wx API可以變得更加直觀的東西之一,但事實並非如此。不幸的是,這是圍繞C API的python包裝的典型代表。 – adriaticc 2012-02-06 04:37:56

相關問題