wxPython, tree Control text cutoff

jean-michel bain-cornu jmbc at nospam.fr
Wed Jun 14 16:38:31 EDT 2006


Kiran a écrit :
>  Hello all,
> I am using a tree to display stuff, and it is constantly updated, but
> what I have noticed is in the lowest level, there is clearly noticable
> cutoff of the text I place there. The cutoff is existent even if I do
> not update the text inside the tree constantly. It seems that the text
> is halfway below where it should line up. I tried placing an image to
> see if that would correct it, but it does not. The image is perfectly
> lined up, but the text is still misaligned.
> 
> Any known issues of this and how to fix it? By the way, it happens in
> both Linux and Windows.
Hi Kiran,
It works fine if you change :
	x = self.tree.AppendItem(self.connections[i][j][0], "")
to
	x = self.tree.AppendItem(self.connections[i][j][0], " ")
I let you imagine the explanation...
Regards,
jm

Just a hint : it'd be helpfull to solve such a bug if you make your 
program more simple. To find out the solution, I reduced your program to 
what's following, and the light came :

import wx
import wx.gizmos as gizmos

class AlarmsWindow(wx.MDIChildFrame):
     def __init__(self, parent, title, size, pos):
         wx.MDIChildFrame.__init__(self, parent, -1, title, size = size, 
pos =pos)
         self.tree = gizmos.TreeListCtrl(self, -1, style = 
wx.TR_DEFAULT_STYLE| wx.TR_FULL_ROW_HIGHLIGHT)
     # create some columns
         self.tree.AddColumn("Connection")
         self.tree.AddColumn("Alarm")
         self.tree.AddColumn("Value")
         self.tree.SetMainColumn(0)

         self.root = self.tree.AddRoot("Connections")
         self.tree.Expand(self.root)
         self.tree.GetMainWindow().Bind(wx.EVT_RIGHT_UP, self.OnRightUp)
         self.Show()

         child = self.tree.AppendItem(self.root, 'name')
         self.tree.SetItemText(child, 'name')
         child2= self.tree.AppendItem(child,'name2')
##        x = self.tree.AppendItem(child2, "")
         x = self.tree.AppendItem(child2, "XXX")
         self.tree.SetItemText(x, 'alarm', 1)
         self.tree.SetItemText(x, 'value', 2)

     def OnRightUp(self, evt):
         pass

class MDIFrame(wx.MDIParentFrame):
     def __init__(self):
         wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent", size 
=(600, 400))
         child = AlarmsWindow(self, "Alarm", (400, 300), (0, 0))


if __name__=='__main__':
     app = wx.PySimpleApp()
     frame = MDIFrame()
     frame.Show()
     app.MainLoop()



More information about the Python-list mailing list