我想在状态栏中添加两个按钮,它们的实现如下:
Column result
2 2*3*4*5*8*6
3 3*4*5*8*6
4 4*5*8*6
5 5*8*6
8 8*6
6 6
问题是:我不知道如何正确设置按钮的位置。 对于上面的示例,我已经有两个插槽,但是不能将它们放在插槽中。取而代之的是,我必须使用“ SetPosition”功能来设置按钮的固定位置,但是一旦窗口大小调整后,按钮将停留在该位置并且不会显示。
我想知道是否有一种简单的方法来设置状态栏中按钮的位置,就像我们使用“ self.status_bar.SetStatusText(self.button1,1)”和“ self.status_bar.SetStatusText( self.button2,2)“
非常感谢!
================================================ ==========================
非常感谢Mike Driscoll的回答,我已经找到了解决方法。 如果有人需要,我将按以下方式发布解决方案。
import wx
class MainFrame(wx.Frame):
"""Constructor"""
def __init__(self, parent, id):
wx.Frame.__init__(self, None)
# self.status_bar = self.CreateStatusBar(3)
self.status_bar = self.CreateStatusBar(3)
self.status_bar.SetStatusText("some text", 0)
self.button1 = wx.Button(self.status_bar, -1, "button 1")
self.button2 = wx.Button(self.status_bar, -1, "button 2")
self.status_bar.SetStatusWidths([-1, 200, 200])
self.button1.SetPosition((self.status_bar.Size[0]-100, 0))
self.button2.SetPosition((self.status_bar.Size[0]-200, 0))
self.Refresh()
self.Show()
if __name__ == "__main__":
app = wx.App()
MainFrame(None, -1)
app.MainLoop()
答案 0 :(得分:0)
最简单的方法是继承wx.StatusBar本身,添加按钮,然后捕获tab
。这样,您可以捕获调整大小的事件,并可以根据需要重新定位小部件。
wxPython演示有一个示例,其中有一个使用以下方法的复选框小部件:
wx.EVT_SIZE
# reposition the checkbox
def Reposition(self):
rect = self.GetFieldRect(1)
rect.x += 1
rect.y += 1
self.cb.SetRect(rect)
self.sizeChanged = False
是指复选框小部件。您可以使用类似这样的东西,除了您需要跟踪两个小部件的位置并相应地进行更新。