Text <--> Event

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

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?
mfg ... Janux
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

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!
Gruß!
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

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 :)
mfg ... Janux
Antworten