Найти - Пользователи
Полная версия: Нужна ваша помощь. Работа с wxPython.
Начало » GUI » Нужна ваша помощь. Работа с wxPython.
1
Trafaret
Помучался в изучении и переводе книжки Пайтон ин экшн..И вот плоды:
import wx
from PIL import Image
import stat,sys,os,string,commands,glob
from loloS import SWindow

class Frame(wx.Frame):


def __init__(self, image, parent=None, id=-1,pos=wx.DefaultPosition,title='Hello, wxPython!'):


temp = image.ConvertToBitmap()

size = temp.GetWidth(), temp.GetHeight()

wx.Frame.__init__(self, parent, id, title, pos, size)

self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)

self.Bind(wx.EVT_MOTION, self.OnSMotion)
self.zero = SWindow(self, 0)

self.statusbar = self.CreateStatusBar()


def OnSMotion(self, event):
self.statusbar.SetStatusText("Position: %s" %
str(event.GetPositionTuple()), 0)

class MenuEventFrame(wx.Frame):
def __init__(self, image, parent, id):
wx.Frame.__init__(self, parent, id, 'Restore3d',size=(300, 200))
self.SetBackgroundColour("White")
temp = image.ConvertToBitmap()

size = temp.GetWidth(), temp.GetHeight()

self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)


menuBar = wx.MenuBar()
menu1 = wx.Menu()
menu2 = wx.Menu()
menuItem1 = menu1.Append(-1, "&Exit...")
menuopen = menu1.Append(0, "&Open file...")
menuItem3 = menu1.Append(1, "&LOLO")
menuBar.Append(menu1, "&File")
menuBar.Append(menu2, "&Test")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnCloseMe, menuItem1)
self.Bind(wx.EVT_MENU, self.menuOpen, menuopen)



def menuOpen(self,e):
"""open a file"""
self.dirname = ''
fileType = "Python files (.py)|*.py|Text files (.txt)|*.txt|Image files (.jpg)|*.jpg"
dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", fileType, wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
self.full_path = os.path.join(self.dirname, self.filename)
path = self.full_path
image1 = wx.Image(path, wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image1)
frame1 = Frame(image1, parent = None, id = 0, pos = wx.Point(-1, -1), title = 'Hello lol')
frame1.Show()
dlg.Destroy()

def OnCloseMe(self, event):
self.Close(True)
class App(wx.App):
def OnInit(self):
image = wx.Image('dodo.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = MenuEventFrame(image, parent = None, id = -1)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
if __name__ == '__main__':
app = App()
app.MainLoop()
import wx
class SWindow(wx.Window):
def __init__(self, parent, ID):
wx.Window.__init__(self, parent, ID)
self.Bind(wx.EVT_MOTION, self.OnMotion)
def OnMotion(self, event):
if event.Dragging():
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)

event.Skip()
class SFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "My Frame",size=(800,600))
self.zero = SWindow(self, -1)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = SFrame(None)
frame.Show(True)
app.MainLoop()
Собственно что делает программа: позволяет открывать в новом окне картинку..только и всего..теперь хочется вписать статусбар с отображением положения курсора мышки при проведении оным по картинке. Статусбар введен, однако, отображаемая картинка разводит начало и полностью игнорируется функциями считывания положения мыши. Подскажите как это исправить. Итог: хочу, чтоб курсор по картинке водил и получал координаты курсора в окошке статусбара.
agalen
Событие EVT_MOTION приходит тому элементу, который лежит “сверху”. В данном случае это StaticBitmap.
    ...
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)
self.bmp.Bind(wx.EVT_MOTION, self.OnSMotion)
А вообще, здесь какая-то путаница с фреймами - здесь 4 класса, хотя достаточно одного.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB