Seite 1 von 1
Styles für StyledTextCtrl, Ausgabe farbig und mit Bildern
Verfasst: Dienstag 7. August 2007, 08:48
von Scyks
Hey Forum,
hab nun schon Google ohne ende missbraucht und die Dokumentationen studiert aber die ist so minimal das man doch da echt nich durchblickt.
Meine Überlegung ist es für eine Chatausgabe styledTextCtrl zu benutzen, denn dort kann man so weit ich gelesen habe images (smilies) einbinden.
Textfarbe müsste ich auch manuell pro ausgabe definieren könne. Im normalen TextCtrl geht das ja ganz einfach jedoch weiß ich nicht wie das im StyledTextCtrl funktioniert.
Könnte mir jemand Tipps oder sogar n Codeschnippesl geben wo man sieht wie das funktioniert?
So sollte eine mögliche Ausgabe aussehen:
07.08.06 9:43:22 User XYZ: Das ist ein Text incl. Smilies
Ich bin echt am Verzweifeln momentan.
Re: Styles für StyledTextCtrl, Ausgabe farbig und mit Bilder
Verfasst: Dienstag 7. August 2007, 09:38
von gerold
Scyks hat geschrieben:für eine Chatausgabe styledTextCtrl zu benutzen
Hallo Scyks!
Verwende stattdessen wx.HtmlWindow. Das ist viel, viel einfacher.
mfg
Gerold

Re: Styles für StyledTextCtrl, Ausgabe farbig und mit Bilder
Verfasst: Dienstag 7. August 2007, 10:10
von Scyks
gerold hat geschrieben:Verwende stattdessen wx.HtmlWindow. Das ist viel, viel einfacher.
mfg
Gerold

Hallo Gerold,
vielen Dank für deine schnelle Antwort.
Ist nicht bei dem HtmlWindow das Problem das dieses nur HTML Datein einlesen kann. Hab die Idee auch schon gehabt aber noch nicht wirklich getestet.
Wie postet man denn da HTML rein? Der muss doch dann sicher auch geparst werden oder? Funktioniert automatisches Scrollen direkt aus Python oder muss ich dann JavaScript verwenden?

Fragen über Fragen .....
Re: Styles für StyledTextCtrl, Ausgabe farbig und mit Bilder
Verfasst: Dienstag 7. August 2007, 11:07
von gerold
Scyks hat geschrieben:Wie postet man denn da HTML rein? Der muss doch dann sicher auch geparst werden oder? Funktioniert automatisches Scrollen direkt aus Python oder muss ich dann JavaScript verwenden?
Hallo Scyks!
Das sind alles keine großen Probleme. Aber nach kurzer Überlegung ist mir eingefallen, dass das ja alles schon von der wx.HtmlListBox erledigt wird.
Also hier ein Beispiel:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class ChatList(wx.HtmlListBox):
_data = []
def get_data(self):
return self._data
def set_data(self, data):
self._data = data
self.SetItemCount(len(data))
data = property(get_data, set_data)
def OnGetItem(self, n):
return self._data[n]
class MyFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, -1, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
chatlist = ChatList(panel)
vbox_main.Add(chatlist, 1, wx.ALL | wx.EXPAND, 5)
self.chatlist = chatlist
txt_message = wx.TextCtrl(panel)
self.txt_message = txt_message
vbox_main.Add(txt_message, 0, wx.EXPAND | wx.ALL, 5)
txt_message.SetFocus()
btn_insert = wx.Button(panel, label = "Insert")
vbox_main.Add(btn_insert, 0, wx.ALL, 5)
btn_insert.SetDefault()
btn_insert.Bind(wx.EVT_BUTTON, self.insert_message)
def insert_message(self, event):
message = self.txt_message.GetValue()
self.txt_message.SetValue("")
message = message.replace("\\n", "<br>\n")
chatlist = self.chatlist
data = chatlist.data
data.append('<b><font color="blue">Hallo</font> Welt:</b>%s' % message)
# Maximal 10000 Einträge zulassen
if len(data) > 10000:
data.pop(0)
datalen = len(data)
chatlist.SetItemCount(datalen)
chatlist.SetSelection(datalen - 1)
chatlist.Refresh(datalen - 1)
chatlist.SetSelection(datalen - 1)
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Schwieriger wird es, wenn der blaue Balken stört. Das bringt man nicht weg. Dann müsste man sich selber so eine Listbox programmieren. Aber für den Anfang sollte die wx.HtmlListBox reichen.
mfg
Gerold

Verfasst: Dienstag 7. August 2007, 12:00
von Scyks
Hallo Gerold,
prinzipiell sieht das schon sehr gut aus. Der blaue Balken, also die Selektierung stört dann doch ein wenig. Ich würde dann eher das wx.HtmlWindow vorziehen,da ist man wohl unflexibler und man hat mehr Freiheiten.
Wenn dann Javascript noch funktioniert kann man ziehmlich geile Spielereien machen.
Es lässt mir mehr Freiheiten und man kann Templates zur Ausgabe bereitstellen. Das würde mir besser gefallen.
Gibt es Tutorials die beschreiben wie man sowas löst?
Eine kleine Hilfe reicht denke ich aus, so komopliziert ist das alles ja nicht
Vielen Dank schonmal für die Hilfe.
Verfasst: Dienstag 7. August 2007, 12:31
von gerold
Scyks hat geschrieben:Wenn dann Javascript noch funktioniert kann man ziehmlich geile Spielereien machen.
Hallo Scyks!
Nein, Javascript funktioniert nich im wx.HtmlWindow. Es kann nur einfache HTML-Tags wie ``<b>`` oder ``<font color="green">`` umsetzen. Weder CSS noch Formulare oder sonstige HTML-Geschichten sind möglich. Der Zweck des wx.HtmlWindow ist Text formatiert anzuzeigen. Mehr nicht. Hast du "wxPython in Action" noch nicht gelesen?
mfg
Gerold

Verfasst: Dienstag 7. August 2007, 12:53
von Scyks
Ähm!

Nein, hab das Buch noch nicht gelesen. Suche mir meine Sachen meistens im Internet zusammen mit Doc`s und Manuals.
Ist zwar nicht ganz so perfekt wenn CSS und so nicht funktioniert aber immerhin ein Ansatz. Tabellen wären Perfekt, denn kann man mit Grafiken arbeiten und wenigstens Designsets anbieten.
Das würde mir trotzdem schon weiterhelfen. Hast du zufällig schon nen kleinen Code?
Oder einen kleinen Ansatz wie man das macht? evtl sogar mit Append und Scrolling?
Verfasst: Dienstag 7. August 2007, 20:02
von Scyks
Danke für die Tipps, hab jetzt ein wenig mit wx.HtmlWindow rumgespielt und das klappt echt gut
Mein Problem ist damit gelöst

, den Rest kriege ich denke ich wieder alleine hin
Vielen Dank für die Hilfe
