2010-04-12 52 views
0

我目前使用wx.CustomTree來顯示一系列配置設置。我通常用wx.TextCtrl/wx.Combobox填充它們,以允許用戶編輯/輸入內容。這裏是我的代碼:wx Python無法正確繪製自定義樹項目

class ConfigTree(CT.CustomTreeCtrl): 
    """ 
     Holds all non gui drawing panel stuff 
    """ 
    def __init__(self, parent): 
     CT.CustomTreeCtrl.__init__(self, parent, 
            id = common.ID_CONTROL_SETTINGS, 
            style = wx.TR_DEFAULT_STYLE | wx.TR_HAS_BUTTONS 
             | wx.TR_HAS_VARIABLE_ROW_HEIGHT | wx.TR_SINGLE) 
     #self.HideWindows() 
     #self.RefreshSubtree(self.root) 
     self.population_size_ctrl = None 
     self.SetSizeHints(350, common.FRAME_SIZE[1]) 
     self.root = self.AddRoot("Configuration Settings") 
     child = self.AppendItem(self.root, "Foo", wnd=wx.TextCtrl(self, wx.ID_ANY, "Lots Of Muffins")) 

的問題是,任何孩子節點,這些節點上的數據沒有填寫當我基本上擴展配置設置樹節點。我看到「Foo」節點,但是文本框是空的。這對兩個文本節點都是一樣的,直到我實際點擊了子節點。我已經試過每種形式的更新/等。有沒有人有任何想法?


要:阿努拉格Uniyal

不給代碼的其餘部分首先抱歉。每當我演示應用程序時,我都會通過調整窗口大小來解決這個問題。

所以我嘗試了我的Macbook Pro運行Mac OS X上的代碼,使用最新的wx和python 2.6。我仍然有同樣的問題,但我注意到調整窗口大小,甚至觸摸滾動條修復問題。

我也不過注意到了,也絕對在Windows Vista中/ Windows下運行沒有問題7.

所以嘗試此上運行WX +蟒蛇的舊版本的MacBook另一個。結果同樣的問題:(

反正是有強制面板重繪它的自我?我敢肯定,當我調整窗口的大小發生。

如果你沒有任何想法,那麼我將它拆下來做一個演示例子,在家裏,不會在工作,直到後來明天。

+0

如果你能給出一個我們可以運行的自包含代碼,現在讓它運行,我不得不寫一些鍋爐板代碼+刪除你對通用模塊的使用 – 2010-04-13 04:36:56

回答

1

我在窗口上用wx版本2.8.10.1測試它,它的工作原理,你使用的OS和wx版本?

這裏是自帶代碼,可以複製粘貼並運行

import wx 
import wx.lib.customtreectrl as CT 

class ConfigTree(CT.CustomTreeCtrl): 
    """ 
     Holds all non gui drawing panel stuff 
    """ 
    def __init__(self, parent): 
     CT.CustomTreeCtrl.__init__(self, parent, 
            id = -1, 
            style = wx.TR_DEFAULT_STYLE | wx.TR_HAS_BUTTONS 
             | wx.TR_HAS_VARIABLE_ROW_HEIGHT | wx.TR_SINGLE) 
     self.population_size_ctrl = None 
     self.SetSizeHints(350, 350) 
     self.root = self.AddRoot("Configuration Settings") 
     child = self.AppendItem(self.root, "Foo", wnd=wx.TextCtrl(self, wx.ID_ANY, "Lots Of Muffins")) 

def main(): 
    app = wx.App() 
    frame = wx.Frame(None, title="Test tree", size=(500,500)) 
    p = wx.Panel(frame, size=(500,500)) 
    tree = ConfigTree(p) 
    tree.SetSize((500,500)) 
    frame.Show() 
    app.MainLoop() 

if __name__ == '__main__': 
    main() 
+0

更新我的問題:) – UberJumper 2010-04-14 06:01:35