使用wx python rulercntl创建多个标尺

时间:2011-03-09 16:09:04

标签: wxpython

我需要编写一个包含多个标尺的gui,允许用户选择将传递给以后代码的起始值和结束值。 wx.lib.rulercntl似乎拥有我需要的一切。我是wxpython的新手,不知道如何去做。有没有人做过类似的事情?我已经找到了一些关于rulercntl的文档,但是不理解它。

提前感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

这是一个简短的例子,用于设置带有两个指示符的RulerCtrl,并在移动其中一个时报告新位置。

import wx, wx.lib.agw.rulerctrl as rc

class MainWindow(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        self.ruler = rc.RulerCtrl(self, orient=wx.HORIZONTAL)
        self.ruler.AddIndicator(id=100, value=0.0)
        self.ruler.AddIndicator(id=101, value=6.5)
        self.text  = wx.TextCtrl(self, style=wx.TE_MULTILINE)

        self.ruler.Bind(rc.EVT_INDICATOR_CHANGED, self.onIndicator)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.ruler, 0, wx.EXPAND)
        self.sizer.Add(self.text,  1, wx.EXPAND)
        self.sizer.SetMinSize((400,300))

        self.SetSizer(self.sizer)
        self.sizer.Fit(self)
        self.Show()

    def onIndicator(self, evt):
        ind_id = evt.GetId()
        ind_pos= evt.GetValue()
        self.text.AppendText('Indicator %s: %s\n' % (ind_id,ind_pos))
        evt.Skip()

app = wx.App(False) 
frame = MainWindow(None, wx.ID_ANY, "RulerCtrl") 
app.MainLoop()