Seite 1 von 1

wx.TextCtrl wx.Image

Verfasst: Montag 1. Mai 2006, 19:41
von JanDMC
Hi Leute

ich habe folgendes Problem,

Ich würde gerne ein wx.Image in ein TextCtrl packen.
Das ganze ist sone Art Messanger und das ist das Fenster, indem der Dialog steht, und indem dann auch smileys hinein sollen ;)

FRAGE:
Hat schon jemand das TextCtrl so angepasst , das es Funktioniert wie zb. TextCtrl.addImage() oder so..

mfg JanDMC :D

Verfasst: Mittwoch 3. Mai 2006, 07:58
von Buell
Hallo,

weiß jetzt nicht wie das genau im TxtCtrl funktioniert, aber im Menu geht das mit SetBitmap:

Code: Alles auswählen

        itemmenu = wx.MenuItem(self.m_menuFile,ID_MENU_NEW,"New","New File",0)
        itemmenu.SetBitmaps(wx.Bitmap("images/new.xpm",wx.BITMAP_TYPE_XPM),wx.NullBitmap)
        self.m_menuFile.AppendItem(itemmenu)
vielleicht hilft es dir ja weiter...

PS: empfehle zum Einstieg in wx immer VisualWX und die Demos von wx

Re: wx.TextCtrl wx.Image

Verfasst: Mittwoch 3. Mai 2006, 11:19
von Francesco
JanDMC hat geschrieben:Hi Leute

ich habe folgendes Problem,

Ich würde gerne ein wx.Image in ein TextCtrl packen.
Das ganze ist sone Art Messanger und das ist das Fenster, indem der Dialog steht, und indem dann auch smileys hinein sollen ;)

FRAGE:
Hat schon jemand das TextCtrl so angepasst , das es Funktioniert wie zb. TextCtrl.addImage() oder so..

mfg JanDMC :D
Hi,

da mich das selbst auch interessiert, habe ich in wxWidgets Forum gefragt,
und bin mit Hilfe von Jorgen auf eine Lösung gekommen.

http://wxforum.shadonet.com/viewtopic.php?t=7967

Meinen selbstgestrickten Code poste ich hier nochmals:

Code: Alles auswählen

#!/usr/bin/env python

import wx

class MyIconTextCtrl(wx.Panel):
    """MyIconTextCtrl."""
    def __init__(self, parent, pos=(50,50), size=(100, 21)):
        """Create the MyIconTextCtrl."""
        #create a panel, which looks like a textctrl
        wx.Panel.__init__(self, parent, pos=pos, size=size, style=wx.SUNKEN_BORDER)
        self.SetBackgroundColour(wx.WHITE)
        self.w, self.h = self.GetSize()
        
        #add a bitmap on the left side
        bmp = wx.ArtProvider_GetBitmap(wx.ART_FIND, wx.ART_OTHER, (16, 16))
        self.staticbmp = wx.StaticBitmap(self, -1, bmp, pos=(1, 0))
        w, h = self.staticbmp.GetSize()
        
        #create an invisible textctrl inside the textctrl pane.
        self.textctrl = wx.TextCtrl(self, pos=(w + 5, 2), size=(self.w - w - 8, h), style=wx.NO_BORDER)
        self.textctrl.Bind(wx.EVT_TEXT_ENTER, self.OnDisplayText)

    def OnDisplayText(self, event):
        """Confirm user entered text."""
        wx.MessageBox("You Entered: '" + self.textctrl.GetValue() + "'", "Info")

class MyFrame(wx.Frame):
    """TextCtrlWithImage Application Frame."""
    def __init__ (self, parent, title):
        """Create the TextCtrlWithImage Application Frame."""
        wx.Frame.__init__(self, parent, title=title)

class MyPanel(wx.Panel):
    """TextCtrlWithImage Panel."""
    def __init__ (self, parent):
        """Create the TextCtrlWithImage Panel."""
        wx.Panel.__init__(self, parent)
        MyIconTextCtrl(self)

class MyApp(wx.App):
    """TextCtrlWithImage Application."""
    def OnInit(self):
        """Create the TextCtrlWithImage Application."""
        frame = MyFrame(None, title="Test: TextCtrl with Image")
        panel = MyPanel(frame)
        frame.Show(True)
        return True

if __name__ == '__main__':
    app = MyApp(redirect=False)
    app.MainLoop()

Bildchen ist auf:
http://mitglied.lycos.de/drpython/TextCtrlWithImage.png

Verfasst: Mittwoch 3. Mai 2006, 14:20
von JanDMC
Bei deiner Lösung ist es möglich eine Bitmap neben dem CTRL zu platzieren, ich bräuchte was um es in irgendeiner stelle des TextCtrl's zu platzieren...

aber trotzdem danke

Verfasst: Mittwoch 3. Mai 2006, 15:28
von Francesco
JanDMC hat geschrieben:Bei deiner Lösung ist es möglich eine Bitmap neben dem CTRL zu platzieren, ich bräuchte was um es in irgendeiner stelle des TextCtrl's zu platzieren...

aber trotzdem danke
Ich denke, da muesstest du direkt in das Window mit DrawText den Text reinschreiben und dann kannst du auch die Bitmaps reinzeichnen.

Verfasst: Mittwoch 3. Mai 2006, 20:46
von gerold
Francesco hat geschrieben:Ich denke, da muesstest du direkt in das Window mit DrawText den Text reinschreiben und dann kannst du auch die Bitmaps reinzeichnen.
Hi!

Wenn es nur um die Anzeige ginge, dann würde ich sowiso das HTML-Widget verwenden. Das kann Text und Grafiken anzeigen. Aber ich glaube nicht, dass das damit gemeint war. Ich denke, er braucht etwas in das er Text eingeben kann und wenn er möchte, noch zusätzlich ein paar Smilies.

Das wird wahrscheinlich das neue wxRichText-Widget ab wxWidgets 2.7 leisten können. Bis dahin würde ich einfach nur ein normales wxTextCtrl zum Schreiben verwenden und für die Anzeige ein HTML-Widget.

lg
Gerold
:-)

Verfasst: Montag 8. Mai 2006, 19:46
von JanDMC
HTML - Widget = gute idee .. danke