Seite 1 von 1

Wie Style von Widgets ändern z.b. den Border oder Font?

Verfasst: Montag 19. Februar 2007, 17:57
von Hand
In Gtk ging das, die Schriftart und die größe(tiefe) des z.b. Sunken Border zu ändern.

Geht das in wx auch irgendwie?

Farbe geht mit SetBackgroundColor() aber für den Rest find ich leider nix

Verfasst: Montag 19. Februar 2007, 18:07
von Hand
das mit dem Font hab ich grade rausgefunden

Code: Alles auswählen

font = wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL)
        text.SetFont(font)
fehlt noch das ändern der Borderdicke :?

Verfasst: Montag 19. Februar 2007, 18:20
von sape
Erstmal vorweg: Fasst alle Widgets habe als absolute Oberklasse wxWindow.
http://wxwidgets.org/manuals/2.8.0/wx_w ... l#wxwindow

Mit Window styles kannst du den Stil angeben. Was zu beachten ist, ist das einige Stile nicht mit allen Widgets Funktioniert. Dazu kommt noch hinzu das einigeWidgets ncoh zusätzliche syles defineiren wie z.B. wxTextCtrl. Benutzt wird das in den man im Konstruktor style=wx.XYZ angibt
Schriftfarbe ändern kannst du mit SetFont und die Hintergrundfarbe mit SetBackgroundColour. Vordergrundfarbe mit SetForegroundColour.

Informationen zu wxFont gibt es hier. EDIT: Und hier: http://wxpython.wxcommunity.com/docs/ap ... class.html

Verfasst: Montag 19. Februar 2007, 18:32
von sape
Hand hat geschrieben: fehlt noch das ändern der Borderdicke :?
Hier mal ein Beispiel mit dem Rahmen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx


class MainFrame(wx.Frame):
    def __init__(self, parent=None, id=-1, title = "MyApp"):
         wx.Frame.__init__(self, parent, id, title)
         self.panel = wx.Panel(self, style=wx.SUNKEN_BORDER)
         
         self.text = wx.TextCtrl(self.panel, pos=(10,10), 
                                 style=wx.DOUBLE_BORDER|wx.TE_MULTILINE)
         font = wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL)
         self.text.SetFont(font)
         
         print >> self.text, "Hello Wordl"
         
def main():
    app = wx.PySimpleApp()
    mf = MainFrame()
    mf.Show()
    app.MainLoop()

if __name__ == "__main__":
    main()
``self.text`` hat hier ein doppelten Rahmen und ``self.panel`` ist eingesunken.

EDIT:
Und hiermit würde die Schriftfarbe so eine Art braunrot ergeben:
``self.text.SetForegroundColour((190, 100, 100))``