Seite 1 von 1

Text <--> Event

Verfasst: Montag 1. Dezember 2008, 22:33
von Janux
Hallo!

Ich würde gerne einen Text erstellen, der fett wird wenn man ihn anklickt.

1. Versuch - Generic Button

Ich dachte schon, dass das gut klappen würde nachdem ich den 3D Effekt
der Buttons ausgestellt habe. Aber leider funktioniert der Zeilenumbruch
nicht wie erwartet mit \n.

2. Versuch - StyledTextCtrl

Hier bin ich drauf gekommen ein ReadOnly TextCtrl zu machen und dort
den Rahmen auszuschalten. Theoretisch würde es gehn mit wx.stc und
style = NO_BORDER. Dies ist aber bestimmt ziemlich `dirty`!?

3. Versuch - Automatisch BMPs erzeugen

Wenn ich aus einem Text automatisch BMPs erzeugen kann wäre auch
das theoretisch denkbar. Ist dies machbar bzw. sinnvoll?

4. Versuch - Statt fett(0|1) eine Checkbox

... aber wenn ich bei der Checkbox einen eigenen Font haben möchte
muss ich bestimmt einen StaticText daneben erstellen, oder?

Verfasst: Montag 1. Dezember 2008, 23:15
von C4S3
Hi!

Der Fett wird, wenn man ihn anklickt, oder beim "MouseOver"?

Ich habe da was gefunden, dass zumindest für MouseOver funktioniert und vielleicht auch eine kleine Starthilfe ist:

Code: Alles auswählen

#!/usr/bin/python

# link.py

import wx
from wx.lib.stattext import GenStaticText
import webbrowser



class Link(GenStaticText):
	def __init__(self, parent, id=-1, label='', pos=(-1, -1),
		size=(-1, -1), style=0, name='Link', URL=''):

		GenStaticText.__init__(self, parent, id, label, pos, size, style, name)

		self.url = URL

		self.font1 = wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'Arial')
		self.font2 = wx.Font(9, wx.SWISS, wx.NORMAL, wx.LIGHT, False, 'Arial')

		self.SetFont(self.font2)
		self.SetForegroundColour('#0000ff')

		self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouseEvent)
		self.Bind(wx.EVT_MOTION, self.OnMouseEvent)


	def OnMouseEvent(self, event):
		if event.Moving():
			self.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
			self.SetFont(self.font1)

		elif event.LeftUp():
			webbrowser.open_new(self.url)

		else:
			self.SetCursor(wx.NullCursor)
			self.SetFont(self.font2)

		event.Skip()


class HyperLink(wx.Frame):
	def __init__(self, parent, id, title):
		wx.Frame.__init__(self, parent, id, title, size=(400, 150))

		panel = wx.Panel(self, -1)
		Link(panel, -1, 'Zu diesem Thread im Forum',
		pos=(10, 60), URL='http://www.python-forum.de/topic-16891.html')
		motto = GenStaticText(panel, -1, 'Bitte mit der Maus drauf:',
		pos=(10, 30))
		motto.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False,
		'Verdana'))
		motto2 = GenStaticText(panel, -1,
		"http://www.zetcode.com/wxpython/customwidgets/")


		self.Centre()
		self.Show(True)

app = wx.App()
HyperLink(None, -1, 'A Hyperlink (from ZetCode.com)')
app.MainLoop()
Quellen:
http://www.zetcode.com/wxpython/customwidgets/

und

http://wiki.wxpython.org/AnotherTutorial?highlight=((AnotherTutorial))

meine Hilfen, ohne denen ich nicht arbeiten könnte. ;)

Vielleicht gibt das ja einen kleinen Anstoß?

Viele Grüße und frohes Knobeln!

Verfasst: Dienstag 2. Dezember 2008, 12:51
von Janux
C4S3 hat geschrieben: Quellen:
http://www.zetcode.com/wxpython/customwidgets/

und

http://wiki.wxpython.org/AnotherTutorial?highlight=((AnotherTutorial))

meine Hilfen, ohne denen ich nicht arbeiten könnte. ;)

Vielleicht gibt das ja einen kleinen Anstoß?

Viele Grüße und frohes Knobeln!
Danke!! Der kleine Anstoß ist ja eigentlich schon fast
die Lösung :)