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

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Hand
User
Beiträge: 65
Registriert: Sonntag 28. Januar 2007, 14:28

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
Hand
User
Beiträge: 65
Registriert: Sonntag 28. Januar 2007, 14:28

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 :?
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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))``
Antworten