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

Plattformunabhängige GUIs mit wxWidgets.
Antworten
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten