Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » wxPython: Как перенести объект в отдельное окно? [RSS Feed]

#1 Июль 12, 2010 17:20:29

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

wxPython: Как перенести объект в отдельное окно?

Методом научного тыка не получилось, но мне нужно, чтобы панель с создаваемым рисунком была в одном окне, а элементы управления в другом. Я это делаю для того, чтобы пользователь мог устанавливать максимальный размер картинки, какой ему только позволит монитор, и чтоб при этом окно настроек не мешало. Для примера прилагаю код с одним единственным слайдером.
Может, кто-нибудь подскажет, как это сделать, чтоб слайдер был в одном окне, а полотно в другом окне?

#!/usr/bin/python



# cpu.py



import wx

import math

import wx.lib.wxcairo



class CPU(wx.Panel):

def __init__(self, parent, id):

wx.Panel.__init__(self, parent, id, size=(600, 600))

self.parent = parent

self.SetBackgroundColour('#FBFF05')

self.Bind(wx.EVT_PAINT, self.OnPaint)



def OnPaint(self, event):



dc = wx.PaintDC(self)

w,h = dc.GetSizeTuple()

cr = wx.lib.wxcairo.ContextFromDC(dc)



pos = self.parent.GetParent().GetParent().sel

rect = pos



cr.set_line_width (10)

cr.set_source_rgba(1, 0, 1, 1)

cr.move_to(20, 20)

cr.line_to(380, rect)



cr.stroke()





class CPUWidget(wx.Frame):

def __init__(self, parent, id, title):

wx.Frame.__init__(self, parent, id, title, size=(800, 600))



self.sel = 0



panel = wx.Panel(self, -1)

centerPanel = wx.Panel(panel, -1)



self.cpu = CPU(centerPanel, -1)



hbox = wx.BoxSizer(wx.HORIZONTAL)

self.slider = wx.Slider(panel, -1, self.sel, 0, 400, (20, 20), (25, 500),

wx.VERTICAL | wx.SL_LABELS | wx.SL_INVERSE)

self.slider.SetFocus()



hbox.Add(centerPanel, 0, wx.LEFT | wx.TOP, 20)

hbox.Add(self.slider, 0, wx.LEFT | wx.TOP, 23)





self.Bind(wx.EVT_SCROLL, self.OnScroll)



panel.SetSizer(hbox)



self.Centre()

self.Show(True)





def OnScroll(self, event):

self.sel = event.GetInt()

self.cpu.Refresh()





app = wx.App()

CPUWidget(None, -1, 'cpu')

app.MainLoop()



Отредактировано (Июль 12, 2010 17:22:28)

Офлайн

  • Начало
  • » GUI
  • » wxPython: Как перенести объект в отдельное окно?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version