Прочитал совет: “Хочешь изучить язык - напиши на нём программу”. Взялся писать, но что-то не учится! Наверное, в названии программы отсутствует слово ZEN (шутка)!
Для начала хотелось бы разобраться, как привязать переменную “x” к слайдеру, установив так же обновление картинки.
Если кто может помочь, то помогите, пожалуйста!
Текст прилагаю:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Mon May 3 10:46:25 2010
import wx
import math
import wx.lib.wxcairo
import cairo
from math import pi as M_PI
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 400, 400)
def CairoPaint(q):
if q == 0:
cr = cairo.Context(surface)
if q == 1:
cr = wx.lib.wxcairo.ContextFromDC(dc)
if q == 2:
svg=cairo.SVGSurface('0001.svg', 400, 400)
cr = cairo.Context(svg)
x = 150
cr.move_to (x, 110)
cr.line_to (190, 190)
cr.rel_line_to (-140, 0.0)
cr.curve_to (120, 190, 120, 150, 150, 150)
cr.close_path ()
cr.move_to (125, 10)
cr.rel_line_to (20, 20)
cr.rel_line_to (-20, 20)
cr.rel_line_to (-20, -20)
cr.close_path ()
cr.set_source_rgb (0, 0, 1)
cr.fill_preserve ()
cr.set_source_rgb (0, 0, 0)
cr.stroke ()
def WriteToPNG():
CairoPaint(0)
surface.write_to_png('0001.png')
class DisplayPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, style=wx.BORDER_SIMPLE)
self.Bind(wx.EVT_PAINT, self.OnPaint)
def OnPaint(self, evt):
global dc
dc = wx.PaintDC(self)
w,h = dc.GetSizeTuple()
CairoPaint(1)
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.slider_1 = wx.Slider(self, -1, 0, 0, 100)
self.panel_1 = DisplayPanel(self)
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle(“frame_1”)
self.SetSize((600, 600))
self.slider_1.SetMinSize((600, 19))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add(self.slider_1, 0, 0, 0)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
# end of class MyFrame
if __name__ == “__main__”:
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, “”)
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()