2010-04-12 5 views
0

J'utilise actuellement wx.CustomTree, pour afficher une série de paramètres de configuration. Je les remplis généralement avec wx.TextCtrl/wx.Combobox, pour permettre à l'utilisateur d'éditer/entrer des choses. Voici mon code:.wx Python ne dessine pas correctement les éléments customtree

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

Le problème est, tous les nœuds enfants, les données de ces noeuds ne sont pas remplis Quand j'élargissons fondamentalement les paramètres de configuration nœud d'arborescence. Je vois le noeud "Foo", mais la zone de texte est vide. C'est la même chose pour les deux nœuds de texte, jusqu'à ce que je clique réellement sur le nœud enfant. J'ai regardé essayé chaque forme de mise à jour/etc. Est-ce que quelqu'un a des idées?


Pour: Anurag Uniyal

Tout d'abord désolé pour ne pas donner le reste du code. J'ai contourné ce problème en redimensionnant simplement la fenêtre chaque fois que je démo l'application. J'ai donc essayé le code sur MacBook Pro sous Mac OS X, avec les derniers wx et python 2.6. J'ai toujours le même problème, cependant j'ai remarqué que redimensionner la fenêtre, ou même toucher la barre de défilement résout le problème.

J'ai aussi remarqué cependant, il n'y a absolument aucun problème en cours d'exécution sous Windows Vista/Windows 7.

donc essayer ceci sur un autre macbook exécutant une version plus ancienne de WX + python. Résultats dans le même problème :(

Y at-il de toute façon de forcer le panneau à redessiner l'auto? Que je suis assez sûr quand je passe redimensionnez la fenêtre.

Si vous n'avez des idées je » Je l'ai démonté et fait un exemple de démo, je suis à la maison et ne serai pas au travail avant demain matin

+0

il est toujours préférable si vous pouviez donner un code autonome que nous pouvons exécuter, maintenant pour le faire fonctionner je dois écrire un code plaque de chaudière + retirer votre utilisation du module commun –

Répondre

1

Je l'ai testé sur une fenêtre avec wx version 2.8.10.1 et ça marche, quelle version OS et wx vous utilisez ?

voici le code autonome, qui peut être copié-collé et exécuté

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

Mis à jour ma question :) – UberJumper

Questions connexes