panel geladen, vernünftige Ausgabe mit fancytext

Plattformunabhängige GUIs mit wxWidgets.
Antworten
qweet
User
Beiträge: 119
Registriert: Freitag 2. September 2005, 21:26

Hallo,

folgender Code:

Code: Alles auswählen

import wx
import wx.lib.fancytext as fancytext

class TestPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, -1)
        self.Bind(wx.EVT_PAINT, self.OnPaint)

    def OnPaint(self, evt):
        dc = wx.PaintDC(self)

        fancytext.RenderToDC('1', dc, 0, 0)

app = wx.PySimpleApp()

frame = wx.Frame(None, -1, "Test")

TestPanel(frame)

frame.Show(1)

app.MainLoop()
erzeugt bei mir ein Fenster mit dem Namen "Test" und gibt oben links im Fenster eine 1 aus.

Ich würde jetzt gern noch weitere Zeichen ausgeben. Wie mach ich das?

Hab folgendes ausprobiert:

Code: Alles auswählen

import wx
import wx.lib.fancytext as fancytext

x = 0
class TestPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, -1)
        self.Bind(wx.EVT_PAINT, self.OnPaint)

    def OnPaint(self, evt):
        dc = wx.PaintDC(self)

        fancytext.RenderToDC('1', dc, x, 0)

app = wx.PySimpleApp()

frame = wx.Frame(None, -1, "Test")

TestPanel(frame)
x = x + 20
TestPanel(frame)

frame.Show(1)

app.MainLoop()
Jedoch wird hier nur ein graues Kästchen gemalt. :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Normalerweise machst du es so, dass du auf das Panel ein Widget namens StaticText drauftust und diesem einen Text zuweist.

Du malst ja auf das Fenster aber Widgets wurden ja erfunden um einem die Malarbeit zu ersparen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
qweet
User
Beiträge: 119
Registriert: Freitag 2. September 2005, 21:26

Danke für die Antwort.

Hab mir das jetzt so zusammengefriemelt :)

Code: Alles auswählen

import wx

def SetzeZeichen(frame, Zeichenkette, Schriftgroesse):
	Text = wx.StaticText(frame, -1, Zeichenkette) 
	Font = Text.GetFont()
	PointSize = Font.GetPointSize()
	PointSize += Schriftgroesse
	Font.SetPointSize(PointSize)
	Text.SetFont(Font)

app = wx.PySimpleApp()
frame = wx.Frame(None, -1, "Test")

SetzeZeichen(frame, 'HALLO', 20)
SetzeZeichen(frame, 'cu', 10)

frame.Show(1)
app.MainLoop()
klappt auch.

Ich würd jetzt jedoch noch gerne andere Attribute ändern, als nur das der Schriftgröße. Farbe, Hintergrund, außerdem die x und y Koordinaten um die Zeichen zu setzen.

Ich schätz mal, das wird wohl alles im Quellcode von StaticText drin stehen. Aber wo finde ich den?
Ich muss leider auch gestehen, :oops: , das ich noch nicht einmal den Quellcode von wx gefunden habe... :(
qweet
User
Beiträge: 119
Registriert: Freitag 2. September 2005, 21:26

:oops: war wohl etwas zu vorschnell mit meiner frage.
per

Code: Alles auswählen

>>> dir (wx.StaticText)
hab ich dann gefunden was ich gesucht habe... oops. :roll:

ich wüsste aber trotzdem gern wo die quellcodes genau liegen.

mfg,
qweet
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die Quellcodes sind C++ Codes, da wxPython nur ein Python-Wrapper zu wxWidgets ist. Den Quellcode zu wxWidgets gibts hier und den zu wxPython hier.

Zum wxPython-Lernen würde ich dir aber die wxPython Demo empfehlen, denn ohne diese bist du oft aufgeschmissen. Außerdem kannst du dich noch in die wxPython-users Mailingliste eintragen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten