首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxPython --如何创建带有两个嵌入面板的单个框架?

wxPython --如何创建带有两个嵌入面板的单个框架?
EN

Stack Overflow用户
提问于 2021-10-15 13:30:54
回答 2查看 122关注 0票数 0

我正在编写一个使用wxPython作为图形界面的程序,我想制作一些类似于传统的Windows部分(现在看来已经过时了),在左边有一个树/目录,一个垂直分隔符,以及您在右边的树中选择的任何页面的内容,其中树和信息都被嵌入到屏幕上倾斜的区域中。在搜索完文档(等等)之后,我似乎找不出如何做到这一点--但我知道这是可能的。我在这样的框架文档中见过截图,但是没有提供任何代码(屏幕截图没有出现在与你如何完成这一任务有关的页面上--我想说的是,它是在页面上进行树视图之类的)。

附图是我的目标截图。它不需要像截图那样复杂,我只想要静态树的一般概念,甚至是左边更新右边内容的链接列表,但是两个面板都设置成斜面的框架(按单词的一般意思),中间有一个垂直的栏。

有人知道怎么做吗?

编辑是因为人们似乎误解了这个问题。我不需要任何人为我编写代码来在图像中生成这样的框架。我只想知道在wxPython中是否有一种方法可以使面板显示在框架中,比如图像中的树和内容部分的方式。简单地将两个面板设置到一个框架中是很简单的,但是没有可见的边框,除非在设置框架时向sizer.Add()调用添加一个sizer.Add()参数,否则“分隔器”只是一个不吸引人的灰色区域。对不起,我不能显示代码;如果我知道创建这样一个嵌入面板的代码,我就不会在这里了。我可以向您展示如何将多个面板添加到单个框架中,并根据另一个框架中的处理程序捕获的事件动态更新一个面板,如果这有帮助的话,但我看不出这一点特别重要。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-17 16:51:22

根据我的评论,wx.SplitterWindow可能是最适合你寻找的。

我的一个项目中的一个SplitterWindow示例:

它没有复制您的示例,但它确实说明了这个东西的外观和感觉,一个管理两个子窗口的类。

票数 1
EN

Stack Overflow用户

发布于 2021-10-15 15:25:08

你并没有试图向我们展示你为使这件事成功所做的工作。你的问题似乎是让别人为你做所有的工作。

下面是一个简单的程序,它创建两个面板,左边有一棵树,右边有一个文本控件。剩下的就交给你了

代码语言:javascript
复制
import wx


class MainFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(None, *args, **kwargs)
        self.size = (400, 1000)
        self.Title = 'Two panels'

        self.help_panel = HelpPanel(self)
        self.index_panel = IndexPanel(self)
        panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
        panel_sizer.Add(self.help_panel, flag=wx.RIGHT, border=5)
        panel_sizer.Add(self.index_panel)
        main_sizer = wx.BoxSizer(wx.HORIZONTAL)
        main_sizer.Add(panel_sizer, flag=wx.ALL, border=5)
        self.SetSizer(main_sizer)
        self.Center()
        self.Show()


class IndexPanel(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.tree = wx.TreeCtrl(self, size=(200,400),  style=wx.TR_DEFAULT_STYLE)
        sizer.Add(self.tree)
        self.SetSizer(sizer)


class HelpPanel(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.tree = wx.TextCtrl(self, size=(200,400),  style=wx.TE_MULTILINE)
        sizer.Add(self.tree)
        self.SetSizer(sizer)


if __name__ == '__main__':
        wx_app = wx.App()
        MainFrame()
        wx_app.MainLoop()
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69585517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档