wx.TextCtrl wx.Image

Plattformunabhängige GUIs mit wxWidgets.
Antworten
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

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
joa nää python is toll :D
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

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
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

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
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

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
joa nää python is toll :D
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

HTML - Widget = gute idee .. danke
joa nää python is toll :D
Antworten