Grid HTML Ausgeben

Plattformunabhängige GUIs mit wxWidgets.
FGB
User
Beiträge: 4
Registriert: Montag 10. Mai 2004, 16:08

Grid HTML Ausgeben

Beitragvon FGB » Sonntag 25. März 2007, 14:06

Hallo,

wollte fragen wie man am besten in einer Grid Zelle HTML ausgibt und zwar nicht als Quellcode.

vielen Dank
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Grid HTML Ausgeben

Beitragvon gerold » Sonntag 25. März 2007, 17:38

FGB hat geschrieben:in einer Grid Zelle HTML ausgibt

Hi FGB!

Das ist die Idee:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
import wx.grid
import wx.html

wx.SetDefaultPyEncoding("iso-8859-1")


class HtmlRenderer(wx.grid.PyGridCellRenderer):
   
    def Draw(self, grid, attr, dc, rect, row, col, isSelected):
       
        text = grid.GetCellValue(row, col)
       
        renderer = wx.html.HtmlDCRenderer()
        renderer.SetDC(dc, 0)
        renderer.SetSize(rect[2], rect[3])
        renderer.SetHtmlText(text)
        renderer.Render(0, 0, [0])


class MyFrame(wx.Frame):
   
    def __init__(
        self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
    ):
       
        wx.Frame.__init__(self, parent, id, title, size = size)
       
        panel = wx.Panel(self)
       
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
       
        grid = wx.grid.Grid(panel)
        vbox_main.Add(grid, 1, wx.EXPAND | wx.ALL, 5)
       
        grid.CreateGrid(10, 10)
        grid.SetCellRenderer(0, 0, HtmlRenderer())


def main():
    """Testing"""
   
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

Irgendwie funktioniert das nicht so wie ich mir das gedacht hatte, aber mehr Zeit investiere ich nicht. Vielleicht kannst du schon etwas damit anfangen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Sonntag 25. März 2007, 17:56

Es hat mir keine Ruhe gelassen... :mrgreen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
import wx.grid
import wx.html

wx.SetDefaultPyEncoding("iso-8859-1")


class HtmlRenderer(wx.grid.PyGridCellRenderer):
   
    def Draw(self, grid, attr, dc, rect, row, col, isSelected):
       
        text = grid.GetCellValue(row, col)
       
        if isSelected:
            bg = grid.GetSelectionBackground()
        else:
            bg = attr.GetBackgroundColour()
       
        bmp = wx.EmptyBitmap(*rect[2:4])
        mem_dc = wx.MemoryDC(bmp)
        mem_dc.SetBackground(wx.Brush(bg, wx.SOLID))
        mem_dc.Clear()
       
        renderer = wx.html.HtmlDCRenderer()
        renderer.SetDC(mem_dc, 0)
        renderer.SetSize(*rect[2:4])
        renderer.SetHtmlText(text)
        renderer.Render(0, 0, [0])
       
        mem_dc.SelectObject(wx.NullBitmap)
       
        dc.DrawBitmap(bmp, 0, 0)


class MyFrame(wx.Frame):
   
    def __init__(
        self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
    ):
       
        wx.Frame.__init__(self, parent, id, title, size = size)
       
        panel = wx.Panel(self)
       
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
       
        grid = wx.grid.Grid(panel)
        vbox_main.Add(grid, 1, wx.EXPAND | wx.ALL, 5)
       
        grid.CreateGrid(10, 10)
       
        grid.SetRowSize(0, 100)
        grid.SetColSize(0, 200)
       
        grid.SetCellRenderer(0, 0, HtmlRenderer())


def main():
    """Testing"""
   
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
FGB
User
Beiträge: 4
Registriert: Montag 10. Mai 2004, 16:08

Beitragvon FGB » Sonntag 25. März 2007, 22:21

vielen vielen Dank :D :D
Ich werd es gleich ausprobieren
FGB
User
Beiträge: 4
Registriert: Montag 10. Mai 2004, 16:08

Beitragvon FGB » Sonntag 25. März 2007, 23:29

Irgendwie scheint es aber immer noch nicht zufunktionieren.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder