【问题标题】:Unable to put BoxSizer inside Notebook in wxpython无法将 BoxSizer 放入 wxpython 中的 Notebook
【发布时间】:2019-10-17 02:51:12
【问题描述】:

我正在尝试将登录/密码页面放在wx.Notebook 的一个选项卡中。但是wx.BoxSizer 不起作用 - 它会堆积标签和按钮。

这是我的代码。

    # Define the tab content as classes:
 class TabOne(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        # USERNAME LABEL
        user_sizer = wx.BoxSizer(wx.HORIZONTAL)
        user_lbl = wx.StaticText(self, label="Username:")
        user_sizer.Add(user_lbl, 0, wx.ALL | wx.CENTER, 5)

        # USERNAME CONTROL TEXT
        self.user = wx.TextCtrl(self)
        user_sizer.Add(self.user, 0, wx.ALL | wx.CENTER, 5)

        # Password LABEL
        password_sizer = wx.BoxSizer(wx.HORIZONTAL)

        pass_lbl = wx.StaticText(self, label="Password:")
        password_sizer.Add(pass_lbl, 0, wx.ALL | wx.CENTER, 5)

        # PASSWORD CONTROL TEXT
        self.password = wx.TextCtrl(self, style=wx.TE_PASSWORD | wx.TE_PROCESS_ENTER)
        password_sizer.Add(self.password, 0, wx.ALL, 5)

        # MAIN SIZER FOR TAB A
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.Add(user_sizer, 0, wx.ALL, 5)
        main_sizer.Add(password_sizer, 0, wx.ALL, 5)

        login_btn = wx.Button(self, label="Login")
        login_btn.Bind(wx.EVT_BUTTON,
                       handler=self.onLogin)

        wx.Panel.SetSizer(main_sizer)

    def onLogin(self):
        return self.bot.login(username=self.user, password=self.password, use_cookie=True)

【问题讨论】:

    标签: python python-3.x wxpython wxwidgets


    【解决方案1】:

    问题是您以错误的方式分配main_sizer。将行 wx.Panel.SetSizer(main_sizer) 更改为 self.SetSizer(main_sizer)。你的TabOne 类来自wx.Panel,所以就像你让你的小部件成为self 的孩子一样,你将把main_sizer 分配给self。

    【讨论】:

    • 你说得对,我改成self.SetSizer(main_sizer),就可以了。非常感谢...
    • @nuriselcuk 很高兴为您提供帮助。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 2021-06-14
    • 2014-12-31
    • 2013-07-28
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多