[wxPython] Tooltip mit Image
Verfasst: Dienstag 12. Februar 2008, 14:25
Hi,
hier wieder eine meiner kleinen Übungen zum Verständnis von wxPython. Manch einer kann das vieleicht gebrauchen?
Gruß, Seven
hier wieder eine meiner kleinen Übungen zum Verständnis von wxPython. Manch einer kann das vieleicht gebrauchen?
Gruß, Seven
Code: Alles auswählen
''' a window with an jpg-image pops up when entering a panel
'''
import wx
from time import sleep
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, title = "Main Frame", size = wx.Size(200, 150))
# the main panel
whitepanel = wx.Panel(self, size = (200, 150))
whitepanel.SetBackgroundColour(wx.Colour(255, 255, 255, 255))
# the 2nd panel
redpanel = wx.Panel(whitepanel, pos = (45, 22), size = (100, 70))
redpanel.SetBackgroundColour(wx.Colour(255, 0, 0, 255))
# the bindings for entering and leaving the 2nd panel
redpanel.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterPanel)
redpanel.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeavePanel)
self.Show()
def OnEnterPanel(self, event):
global PW
# the delay time before the window pops up
sleep(0.25)
# the position of the main frame
winpos = self.GetPosition()
# x-, y- position of the mouse
mousex = wx.MouseEvent.GetX(event) + winpos[0]
mousey = wx.MouseEvent.GetY(event) + winpos[1] + 100
# call the popup window
PW = Popupwindow(mousex, mousey)
def OnLeavePanel(self, event):
# destroy the popup window on leaving the red panel
PW.Destroy()
class Popupwindow(wx.MiniFrame):
def __init__(self, mx, my):
# get the image and convert it to bitmap
jpg = wx.Image('''path_to_your_image'''+ 'image.jpg', wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
# get the width and height of the image
wd = jpg.GetWidth(); ht = jpg.GetHeight()
# wx.MiniFrame: a window without border and title bar. wx.MINIMIZE_BOX: the window should not be placed in the task bar
wx.MiniFrame.__init__(self, None, -1, pos = (mx, my), size = wx.Size(wd+150, ht+50), style = wx.MINIMIZE_BOX)
# paints the popup window light yellow
self.SetBackgroundColour(wx.Colour(252, 254, 214, 255))
# place the image
wx.StaticBitmap(self, -1, jpg, (10, 20), (wd, ht))
# place the text
wx.StaticText(self, -1, " Dies ist Zeile 1\n\n Dies ist Zeile 2\n\n Dies ist Zeile3\n\n Dies ist Zeile 4", (wd+40, 40))
self.Show()
class MyApp(wx.App):
def OnInit(self):
MF = MainFrame()
return True
app = MyApp(0)
app.MainLoop()