2016-11-16 14 views
-1

2番目のパネルで表示したいデータが正確に表示されないのはなぜですか? チェックボックスはチェック可能ではありません。2番目のフレーム(パネル)の結果データが正確に表示されない

コードをすべて実行しようとすると、私の意図がわかります。

import wx 
from wx.lib.pubsub import Publisher 
import sys 

reload(sys) 
sys.setdefaultencoding('cp1252') 

######################################################################## 
class OtherFrame(wx.Frame): 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Secondary Frame for showing ResulT",size=(400,400)) 
     self.panel = OtherPanel(self) 


class OtherPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent=parent) 
     self.frame = parent 

######################################################################## 
class MainPanel(wx.Panel): 
    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent=parent) 
     self.frame = parent 


     self.postal_code = wx.TextCtrl(self, value="") 
     self.limit = wx.TextCtrl(self,value="") 
     showSecondFrame = wx.Button(self, label="Catching") 
     showSecondFrame.Bind(wx.EVT_BUTTON, self.ShowFrame) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(self.postal_code, 0, wx.ALL|wx.CENTER, 5) 
     sizer.Add(self.limit, 0, wx.ALL|wx.CENTER, 10) 
     sizer.Add(hideBtn, 0, wx.ALL|wx.CENTER, 5) 
     self.SetSizer(sizer) 

    #---------------------------------------------------------------------- 
    def ShowFrame(self, event): 
     postal_code = self.postal_code.GetValue() 
     limit = self.limit.GetValue() 
     new_frame = OtherFrame() 
     new_frame.Show() 
     print limit, postal_code 
     Y = 10 
     i=0 
     all_data = ['Far Away 1337','Street Dance 101','Necro Lover 152','N0stalgene 689'] 
     for address in all_data: 
      Y += 20 
      i += 1 

      self.cb = wx.CheckBox(new_frame, label=str(address+"-"+postal_code+"-"+limit), pos=(10,Y)) 


######################################################################## 
class MainFrame(wx.Frame): 
    #---------------------------------------------------------------------- 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "TEST1NG") 
     self.panel = MainPanel(self) 
     self.new_frame = OtherFrame() 


#---------------------------------------------------------------------- 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MainFrame() 
    frame.Show() 
    app.MainLoop() 

答えて

1

これは、チェックボックスに正しい親がないためです。フレーム上のパネルではなく、フレームに割り当てられます。 チェックボックスを作成するときは、代わりにこれを試してください

self.cb = wx.CheckBox(new_frame.panel, label=str(address + "-" + postal_code + "-" + limit), pos=(10, Y)) 
関連する問題