Найти - Пользователи
Полная версия: Помогите, пожалуйста, разобраться с атрибутами в wxPython!
Начало » Python для новичков » Помогите, пожалуйста, разобраться с атрибутами в wxPython!
1
leonid_10
Пытался самостоятельно, но уже совсем сник.
Я только начал изучать Питон и увидел здесь на сайте интересный примерчик создания окна, показывающего координаты курсора. У меня сразу появилась идея на основе этого создать миди-клавиатуру, но для начала я думал, разбираясь с логическими операциями сделать просто, чтоб появлялись не координаты, а названия нот. Для облегчения задачи я использовал wxGlade, но, оказалось, что всё совсем не так просто, ибо курсор виден только за пределами объектов. StaticBitmap не имеет атрибута SetValue. В связи с этим возникло 2 вопроса: как создать этот атрибут для картинки, или как сделать картинку невидимой для курсора?
Я не разобрался ещё как прикрепить файл, но чтобы не сочли, что я тут просто так вот текст:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Sun Mar 28 16:40:54 2010

import wx

# begin wxGlade: extracode
# end wxGlade



class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.panel_1 = wx.Panel(self, -1)
self.panel_1.Bind(wx.EVT_MOTION, self.OnMove)
self.text_ctrl_1 = wx.TextCtrl(self.panel_1, -1, “”)
self.bitmap_1 = wx.StaticBitmap(self.panel_1, -1, wx.Bitmap(“/home/leonid/python/bitmap/midi_vk.png”, wx.BITMAP_TYPE_ANY), style=wx.WANTS_CHARS)

self.__set_properties()
self.__do_layout()
# end wxGlade

def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle(“frame_1”)
self.SetSize((602, 300))
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_2.Add(self.text_ctrl_1, 0, 0, 0)
sizer_2.Add(self.bitmap_1, 0, 0, 0)
self.panel_1.SetSizer(sizer_2)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade

# end of class MyFrame

def OnMove(self, event):
pos = event.GetPosition()
self.text_ctrl_1.SetValue(“%s, %s” % (pos.x, pos.y))


if __name__ == “__main__”:
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, “”)
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()
sypper-pit
тебе в другую тему , модераторы перенесите в gui
pyuser
sypper-pit
StaticBitmap не имеет атрибута SetValue.
А что подразумевается под SetValue для StaticBitmap? :-) Может быть можно обойтись методом SetBitmap?
sypper-pit
… как сделать картинку невидимой для курсора?
Т.е Вы хотите отлавливать перемещение курсора над картинкой? Так привяжите к ней соответствующее событие
leonid_10
sypper-pit
Так я же полный новичок, поэтому и вопрос задал в разделе для новичков. Но, тем не менее спасибо, что обратили внимание. Это позволило мне вновь просмотреть и понять, что я, вообще, не того чего-то делал. Нужно же было просто изменить строчку:
self.panel_1.Bind(wx.EVT_MOTION, self.OnMove)
на строчку :
self.bitmap_1.Bind(wx.EVT_MOTION, self.OnMove)
Теперь всё нормально и можно отследить координаты клавиш. Побробую двигаться дальше.
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