Найти - Пользователи
Полная версия: WxPython.Как пользовать элементы управления?
Начало » GUI » WxPython.Как пользовать элементы управления?
1
leonid_10
Прочитал совет: “Хочешь изучить язык - напиши на нём программу”. Взялся писать, но что-то не учится! Наверное, в названии программы отсутствует слово 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()
leonid_10
Кому понадобится, то подсказка, как управлять переменной слайдером есть вот здесь:
http://www.zetcode.com/wxpython/customwidgets/
А, именно, в коде “The CPU widget”

Теперь бы разобраться, как кнопкой функцию вызвать, но, я уже не спрашиваю, так как отвечать тут не спешат.
sypper-pit
ты хочешь чтоб у тебя это в системе или браузере работало ?
leonid_10
sypper-pit
ты хочешь чтоб у тебя это в системе или браузере работало ?
sypper-pit, спасибо, что откликнулся, а то уже моя надежда умирать потихоньку начала! :)

Я хочу, чтоб это работало в программе, которая написана вверху. Там есть функция WriteToPNG(). Вот мне нужно, чтоб эта функция вызывалась нажатием кнопки. Я, правда ещё в том тексте не вставил кнопку. Вообще на основе того кода я собираюсь написать программу для создания текстур для трёхмерной графики. Сначала это будут орнаменты в виде статических изображений для текстур обоев, линолеума, керамической плитки, изделий из стекла, фарфора, но по ходу освоения программирования хотелось бы добиться и получения последовательностей для анимаций для наложения различных эффектов на видео. Cairo очень интересная библиотека, боюсь чтоб фантазии хватило использовать максимум её возможностей.
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