ListCtrl-größe bei frame-resize anpassen ?
Verfasst: Sonntag 14. Januar 2007, 16:04
Hallo,
Ich programmiere gerade einen File-Browser und werde wahrscheinlich noch einige Fragen an euch haben. Hier meine erste :
Also ich bin soweit, dass ich alle Dateien eines Ordners in einer Liste anzeigen kann.Nun will ich, dass sich die Größe der Liste beim Ändern der Fenstergröße anpasst.
Ich habe es folgendermaßen geschafft, jedoch flimmert der Fensterinhalt beim Vergrößern/Verkleinern unheinmlich.
Gibt es einen anderen Weg, der für das Programm weniger aufwendig ist und somit das Flimmern verhindert werden kann?
Ich bedanke mich im Voraus für euer Bemühen!
Ich programmiere gerade einen File-Browser und werde wahrscheinlich noch einige Fragen an euch haben. Hier meine erste :
Also ich bin soweit, dass ich alle Dateien eines Ordners in einer Liste anzeigen kann.Nun will ich, dass sich die Größe der Liste beim Ändern der Fenstergröße anpasst.
Ich habe es folgendermaßen geschafft, jedoch flimmert der Fensterinhalt beim Vergrößern/Verkleinern unheinmlich.
Gibt es einen anderen Weg, der für das Programm weniger aufwendig ist und somit das Flimmern verhindert werden kann?
Code: Alles auswählen
import wx
import os
import glob
class MainList(wx.ListCtrl):
def __init__(self, parent, id):
wx.ListCtrl.__init__(self, parent, id, size=(500,400), style=wx.LC_ICON | wx.LC_AUTOARRANGE)
self.il = wx.ImageList(32, 32, True)
for icon in glob.glob("icons/*.png"):
bmp = wx.Bitmap(icon, wx.BITMAP_TYPE_ANY)
self.il.Add(bmp)
self.SetImageList(self.il, wx.IMAGE_LIST_NORMAL)
j = 1
for file in os.listdir("."):
(name, ext) = os.path.splitext(file)
if os.path.isdir(file):
self.InsertImageStringItem(j, file, 0)
elif ext == ".py":
self.InsertImageStringItem(j, file, 1)
else:
self.InsertImageStringItem(j, file, 2)
j +=1
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Filer")
self.panel = wx.Panel(self)
self.panel.SetBackgroundColour("White")
sizer = wx.GridSizer(1,0)
self.panel.SetSizer(sizer)
self.listctrl = MainList(self.panel, -1)
sizer.Add(self.listctrl)
sizer.Fit(self)
self.Bind(wx.EVT_SIZE, self.OnReSize)
def OnReSize(self, event):
size = self.GetSize()
self.panel.SetSize(size)
self.listctrl.SetSize(size)
app = wx.PySimpleApp()
frame = MainFrame()
frame.Show()
app.MainLoop()