Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface wxPython:如何在状态栏中定位额外的小部件?_User Interface_Drop Down Menu_Wxpython_Statusbar - Fatal编程技术网

User interface wxPython:如何在状态栏中定位额外的小部件?

User interface wxPython:如何在状态栏中定位额外的小部件?,user-interface,drop-down-menu,wxpython,statusbar,User Interface,Drop Down Menu,Wxpython,Statusbar,我设法将wx.Choice添加到状态栏,方法是将该选项设置为其子项,理论上它会显示在正确的区域: 问题是: 很明显,选择小部件隐藏了状态栏的文本 我找不到任何方法将我的选择放在正确的位置 窗户 正如您所猜测的,我的目标是对齐窗口右侧的选项项,并确保状态栏的文本窗格尊重选项的存在 import wx class MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, title='St

我设法将wx.Choice添加到状态栏,方法是将该选项设置为其子项,理论上它会显示在正确的区域: 问题是:

  • 很明显,选择小部件隐藏了状态栏的文本
  • 我找不到任何方法将我的选择放在正确的位置 窗户
  • 正如您所猜测的,我的目标是对齐窗口右侧的选项项,并确保状态栏的文本窗格尊重选项的存在

    import wx
    
    class MainFrame(wx.Frame):
    
        def __init__(self):
            wx.Frame.__init__(self, None, title='Statusbar',size=(300,200))
            panel = wx.Panel(self)
            status_btn = wx.Button(panel, label='Get Statusbar Info')
            status_btn.Bind(wx.EVT_BUTTON, self.on_status)
            self.statusbar = self.CreateStatusBar(2)
            w1 = self.statusbar.Size[0]
            w1= w1 - 50
            self.statusbar.SetStatusWidths([w1, -1])
            self.statusbar.SetMinHeight(30)
            self.statusbar.SetStatusText('Statusbar field 1')
            self.mychoices = wx.Choice(self.statusbar, wx.ID_ANY, choices=[("en"), ("it"), ("de")])
            self.mychoices.SetSelection(0)
            self.mychoices.SetPosition((w1+2, 2))
            self.Show()
    
        def on_status(self, event):
            print (self.statusbar.GetStatusText())
            print (self.mychoices.GetSelection())
            print (self.mychoices.GetString(self.mychoices.GetSelection()))
    
    if __name__ == '__main__':
        app = wx.App()
        frame = MainFrame()
        app.MainLoop()
    

    SetStatusWidths给了我一个字段号不匹配的问题,但我只通过传递[w1]就成功地使它工作了。谢谢我还使用mychoices.Size[0]而不是50来获得正确的宽度,而不管wx.Choice的大小。Mike在添加的链接中的回答非常棒: