wxPython:如何在状态栏中放置额外的小部件?

Posted

技术标签:

【中文标题】wxPython:如何在状态栏中放置额外的小部件?【英文标题】:wxPython: how to position extra widgets in the status bar? 【发布时间】:2018-03-12 22:53:12 【问题描述】:

我设法通过将 Choice 设为子项来将 wx.Choice 添加到状态栏,理论上它确实会显示在正确的区域: 问题:

    显然,Choice 小部件隐藏了状态栏的文本。 我找不到任何方法将我的选择放在右侧 窗口。

如您所料,我的目标是对齐窗口右侧的 Choice 项,并确保状态栏的文本窗格尊重 Choice 的存在。

【问题讨论】:

Mike 在附加链接中的回答很棒:***.com/questions/53737630/… 【参考方案1】:
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 的大小。

以上是关于wxPython:如何在状态栏中放置额外的小部件?的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress:如何在菜单中放置小部件区域

第一个 wxPython 窗体应用程序

删除wxPython小部件之间的填充

如何隐藏主窗口标题栏并在 kivy 框架中放置透明背景?

pyqt - 如何从状态栏中的小部件中删除边框?

是否可以在 macOS 状态栏中放置矢量(或字体)图标?