Grid HTML Ausgeben

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

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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

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

Sonntag 25. März 2007, 23:29

Irgendwie scheint es aber immer noch nicht zufunktionieren.
Antworten