Seite 1 von 1

Bauen wir eine Liste mit dem Objekt wx.grid.Grid

Verfasst: Donnerstag 26. Oktober 2006, 18:33
von JR
Hi!

Vor diesem Problem stehe ich sicherlich nicht als Erster:

Das Objekt wx.ListCtrl() sieht toll aus, kann aber nicht so viel.

Das Objekt wx.grid.Grid() kann viel, sieht aber nicht ganz so schick aus.
Es gibt viele Möglichkeiten, ein grid nach einer normalen Liste aussehen zu lassen und auch das Verhalten nachzubauen.
Keine Zeilentitel, nur einzelne Zeilen selektierbar o.ä. als Beispiel.

Wie bekomme ich aber auch einen Rahmen ums grid herum. Es gibt zwar eine Methode GetBorder(), doch ersten weiß ich nicht, wozu die gut ist und außerdem gibt es kein Pendant SetBorder().

Hat jemand Ideen?

Würde mich sehr freuen, da mir die vielen Möglichkeiten des Grid sehr zusagen. Und eine listenförmige Informationsanzeige ist in einer Applikation ein sehr zentrales Element.

Viele Grüße aus Berlin
JR

Re: Bauen wir eine Liste mit dem Objekt wx.grid.Grid

Verfasst: Donnerstag 26. Oktober 2006, 19:41
von gerold
JR hat geschrieben:Wie bekomme ich aber auch einen Rahmen ums grid herum.
Hi JR!

Das Grid erbt von wxWindow. Du kannst beim Erstellen des Grids also einen der möglichen Styles mit übergeben. Z.B. ``mygrid = wx.grid.Grid(self, style = wx.SIMPLE_BORDER)``
http://www.lpthe.jussieu.fr/~zeitlin/wx ... indow.html

lg
Gerold
:-)

Verfasst: Freitag 27. Oktober 2006, 09:33
von JR
Hi Gerold!

Wie konnte ich das übersehen :oops:

Muss mal rumprobieren, welcher der Styles mir unter Windows auch wirklich einen genauso aussehenden Rahmen (in blau) liefert, wie es bei wx.ListCtrl() ausschaut.

Habe einen Dialog, mit diesen beiden Objekten nebeneinander. Soll natürlich möglichst gleich aussehen :-)

Danke dir!
Gruß
JR

Verfasst: Freitag 27. Oktober 2006, 09:53
von gerold
JR hat geschrieben:Muss mal rumprobieren, welcher der Styles mir unter Windows auch wirklich einen genauso aussehenden Rahmen (in blau) liefert, wie es bei wx.ListCtrl() ausschaut.
Hi JR!

Das wird so nicht funktionieren.

wxPython verwendet für das ``ListCtrl`` das in Windows eingebaute ListCtrl. Der Style kommt also direkt vom Windows.

Das Grid wurde aber *eigens programmiert* und dieses gibt es im Windows nicht als eingebautes Widget.

Du könntest dir jetzt einfahch einen Rahmen um das Grid zeichnen, der genauso wie unter Windows XP aussieht, aber was machst du, wenn dein Programm mit Windows 2000 oder Windows Vista oder irgendeinem anderen Skin angezeigt wird? Diese Fälle kannst du so nicht abdecken, deshalb würde ich das Grid einfach so lassen wie es ist. Du könntest ja eine ``StaticBox`` um das Grid legen. Das sieht auch nicht schlecht aus.
Das Grid exakt gleich wie das ``ListCtrl`` aussehen zu lassen, dürft kaum möglich sein.

Das ListCtrl selbst, kann aber auch mehr als man denkt. Siehe: C:\Python24\Lib\site-packages\wx-2.7.1-msw-unicode\wx\lib\mixins\listctrl.py

Hier ein Auszug daraus:

Code: Alles auswählen

# Name:        wxPython.lib.mixins.listctrl
# Purpose:     Helpful mix-in classes for wxListCtrl

class ColumnSorterMixin:
    """
    A mixin class that handles sorting of a wx.ListCtrl in REPORT mode when
    the column header is clicked on.
    """

class ListCtrlAutoWidthMixin:
    """ A mix-in class that automatically resizes the last column to take up
        the remaining width of the wx.ListCtrl.
    """

class ListCtrlSelectionManagerMix:
    """Mixin that defines a platform independent selection policy
    """

class TextEditMixin:
    """    
    A mixin class that enables any text in any column of a
    multi-column listctrl to be edited by clicking on the given row
    and column.  You close the text editor by hitting the ENTER key or
    clicking somewhere else on the listctrl. You switch to the next
    column by hiting TAB.
    """

class CheckListCtrlMixin:
    """
    This is a mixin for ListCtrl which add a checkbox in the first
    column of each row. It is inspired by limodou's CheckList.py(which
    can be got from his NewEdit) and improved:
    """
lg
Gerold
:-)