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()