使用 wx python Rulercntl 创建多个标尺

发布于 2024-10-20 19:46:52 字数 161 浏览 5 评论 0原文

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

预先感谢您的任何帮助,

I need to write a gui that contains multiple rulers permitting users to select starting and ending values that will be passed to later code. The wx.lib.rulercntl seems to have everything I need. I'm new to wxpython and don't know how to go about doing this. Has anyone done something similar? I've found some documentation on rulercntl, but don't comprehend it.

Thanks in advance for any help,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

财迷小姐 2024-10-27 19:46:52

下面是一个简短的示例,它设置了带有两个指示器的 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()

Here's a short example which sets up a RulerCtrl with two indicators, and reports the new position when one of them is moved.

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文