- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有两个 wxNotebook 元素的 GUI,如下所示:
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"My App",size=(800,600),pos=((wx.DisplaySize()[0]-800)/2,(wx.DisplaySize()[1]-600)/2),style= wx.SYSTEM_MENU | wx.CAPTION | wx.MINIMIZE_BOX | wx.CLOSE_BOX)
self.SetBackgroundColour((232,232,232))
self.p = wx.Panel(self,size=(800,6300),pos=(0,0))
self.SetPages()
def SetPages(self):
self.nb = wx.Notebook(self.p,style=wx.NB_BOTTOM)
page1 = PageOne(self.nb)
page2 = PageTwo(self.nb)
self.nb.AddPage(page1, "page1")
self.nb.AddPage(page2, "page2")
self.sizer = wx.BoxSizer()
self.sizer.Add(self.nb, 1, wx.EXPAND)
self.p.SetSizer(self.sizer)
现在我想创建第三个笔记本页面并在某个事件中将焦点设置在它上面。但这不起作用:
def CreateNewPageEvent(self, event):
self.CreateNewPage()
def CreateNewPage(self):
page3 = PageThree(self.nb)
self.nb.AddPage(page3, "page3")
我必须承认我不确定“BoxSizer”的作用 =/有什么想法可以让它发挥作用吗?
编辑:好的,这适用于我的 MainFrame 类中的事件。但我也想从另一个类的事件创建一个新的 nb-page:
class ContinueApp(MainFrame):
def foo(self):
super(ContinueApp, self).CreateNewPage()
def continueapp(event):
cont = ContinueApp()
cont.foo()
最佳答案
BoxSizer(和其他 sizer)用于布置小部件,因此您不必自己定位它们。当您使应用程序窗口变大或变小时,它们还有助于控制扩展或拉伸(stretch)哪些小部件。在您的情况下,您不应将同一个小部件添加到同一个 sizer 两次。您也不应该将一个小部件添加到两个不同的 sizer。
你需要删除这个:
self.nb.AddPage(page1, "page3")
self.sizer.Add(self.nb, 1, wx.EXPAND)
self.p.SetSizer(self.sizer)
另请注意,当您应该添加 page3 时,您再次将 page1 添加到笔记本中:
page3 = PageThree(self.nb)
self.nb.AddPage(page3, "page3")
如果您想以编程方式在选项卡之间切换,您应该使用笔记本的 SetSelection 方法。我有一个示例应用程序,您可以在以下教程(或下面的答案)中查看:
切换选项卡后,您可能希望将焦点设置在该选项卡内的小部件上。我发现使用 pubsub 发送事件可能是类间通信最干净的方式。我有几个关于该主题的教程:
关于python - wxNotebook 和 wxBoxSizer 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777527/
我正在使用 wxWidgets(C++ 版本)开发记事本应用程序,并且我正在努力实现多文件支持。使用 wxNotebook 类,我似乎找不到任何有关向页面添加关闭按钮的文档,因此我可以轻松关闭单个文件
当动态更改 wxNotebook 中元素的大小时(例如隐藏按钮),整个笔记本元素的大小不会更新。这可能会留下空白或阻止显示某些元素。 通常情况下,调用父窗口的 Fit() 或 FitInside(
void Mainframe::OnClearNotebook( wxCommandEvent& e ) { int end = m_notebook->GetPageCount();
我有一个名为 MyListView 的类,它派生自 wxListCtrl,这个类充当 wxNotebook 的页面。 MyListView* l = new MyListView( m_noteboo
我有一个带有两个 wxNotebook 元素的 GUI,如下所示: class MainFrame(wx.Frame): def __init__(self): wx.Fram
(我也将这个问题标记为 Python,因为我理解 Python 代码,所以也欢迎使用 Python 示例!)。 我想在wxWidgets中创建一个简单的窗口: 我创建了一个主面板,并将其添加到表单中
我需要能够通过显示在每个选项卡上的文本/标签以编程方式在 wxNotebook 上添加和删除选项卡。 在 Windows 中,使用选项卡控件和选项卡页面,我将能够通过一个键来引用每个选项卡。选项卡控件
我正在尝试将具有水平布局的大小调整器嵌套在笔记本页面面板的垂直布局大小调整器内。 我从 wxPython: Resizing a notebook within a notebook 中得到了一些灵
如何使用 wxNotebook 创建像 IM 程序那样的 Tab 闪烁效果? 这方面的一个很好的例子是任何选项卡式 IM 程序,它会闪烁以向用户显示他们收到了新的 IM。 最佳答案 您可以为每个选项卡
我是一名优秀的程序员,十分优秀!