Seite 1 von 1

panel geladen, vernünftige Ausgabe mit fancytext

Verfasst: Sonntag 2. Oktober 2005, 17:51
von qweet
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. :(

Verfasst: Sonntag 2. Oktober 2005, 19:38
von Leonidas
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.

Verfasst: Montag 3. Oktober 2005, 10:27
von qweet
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... :(

Verfasst: Montag 3. Oktober 2005, 10:43
von qweet
: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

Verfasst: Montag 3. Oktober 2005, 11:04
von Leonidas
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.