我正在编写一个使用wxPython作为图形界面的程序,我想制作一些类似于传统的Windows部分(现在看来已经过时了),在左边有一个树/目录,一个垂直分隔符,以及您在右边的树中选择的任何页面的内容,其中树和信息都被嵌入到屏幕上倾斜的区域中。在搜索完文档(等等)之后,我似乎找不出如何做到这一点--但我知道这是可能的。我在这样的框架文档中见过截图,但是没有提供任何代码(屏幕截图没有出现在与你如何完成这一任务有关的页面上--我想说的是,它是在页面上进行树视图之类的)。
附图是我的目标截图。它不需要像截图那样复杂,我只想要静态树的一般概念,甚至是左边更新右边内容的链接列表,但是两个面板都设置成斜面的框架(按单词的一般意思),中间有一个垂直的栏。
有人知道怎么做吗?
编辑是因为人们似乎误解了这个问题。我不需要任何人为我编写代码来在图像中生成这样的框架。我只想知道在wxPython中是否有一种方法可以使面板显示在框架中,比如图像中的树和内容部分的方式。简单地将两个面板设置到一个框架中是很简单的,但是没有可见的边框,除非在设置框架时向sizer.Add()调用添加一个sizer.Add()参数,否则“分隔器”只是一个不吸引人的灰色区域。对不起,我不能显示代码;如果我知道创建这样一个嵌入面板的代码,我就不会在这里了。我可以向您展示如何将多个面板添加到单个框架中,并根据另一个框架中的处理程序捕获的事件动态更新一个面板,如果这有帮助的话,但我看不出这一点特别重要。

发布于 2021-10-17 16:51:22
根据我的评论,wx.SplitterWindow可能是最适合你寻找的。
我的一个项目中的一个SplitterWindow示例:

它没有复制您的示例,但它确实说明了这个东西的外观和感觉,一个管理两个子窗口的类。
发布于 2021-10-15 15:25:08
你并没有试图向我们展示你为使这件事成功所做的工作。你的问题似乎是让别人为你做所有的工作。
下面是一个简单的程序,它创建两个面板,左边有一棵树,右边有一个文本控件。剩下的就交给你了
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()https://stackoverflow.com/questions/69585517
复制相似问题