2012-02-26 57 views
1

我没有任何运气来设置wxPython滑块控件的水平位置。在我所有的测试中,设置水平位置对控件的位置没有影响。 任何人都可以告诉我我错过了什么吗? 感谢如何定位wxPython滑块控件

这是我已经试过:

import wx 

    class SliderFrame(wx.Frame): 
     def __init__(self): 
      wx.Frame.__init__(self, None, -1, 'Slider Example', size=(400, 600)) 
      panel = wx.Panel(self, -1) 
      self.count = 0 
      hslider1 = wx.Slider(panel, 100, 25, 1, 100, pos=(10, 10), 
        size=(250, -1), 
        style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS) 
      hslider1.SetTickFreq(5, 1) 

      hslider2 = wx.Slider(panel, 100, 25, 1, 100, pos=(100, 330), 
        size=(250, -1), 
        style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS) 
      hslider2.SetTickFreq(5, 1) 


      vslider1 = wx.Slider(panel, 100, 25, 1, 100, pos=(15, 70), 
        size=(-1, 250), 
        style=wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS) 
      vslider1.SetTickFreq(20, 1) 



    app = wx.PySimpleApp() 
    frame = SliderFrame() 
    frame.Show() 
    app.MainLoop() 

回答

2

这很奇怪。一个明显的解决方法是将滑块放置在可定位的面板中(下图)或使用大小调整器。另外请注意,该错误消失,如果你使用

p2 = wx.Panel(panel, -1, size=(250, 100), pos=(100,330)) 
    hslider2 = wx.Slider(p2, -1, 27, 0, 100, 
      size=(250, -1), 
      style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS) 
    hslider2.SetTickFreq(5, 1) 

它也可以使用SetDimensions,这样的:对于你对此有何评论

hslider2 = wx.Slider(panel, -1, 27, 0, 100, 
      style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS) 
    hslider2.SetTickFreq(5, 1) 
    hslider2.SetDimensions(100, 330, 250, -1) 

enter image description here

+0

谢谢,但问题是没有价值它的事实是,对于位置元组(X,Y),X值被忽略。 hslider1应该位于pos =(10,10)hslider2 pos =(100,30),但两者都在窗口的最左侧对齐。垂直滑块vslider1正确响应X位置更改。 – user1032355 2012-02-27 09:35:05

+0

我明白了。我确定了我的答案。它看起来像某种错误。 – tom10 2012-02-27 18:24:45

+0

再次感谢提示将滑块置于面板中的解决方案,但似乎并不奇怪的是,水平滑块x位置被忽略,而垂直滑块x位置被使用。 – user1032355 2012-02-27 18:27:23