我正在撰寫一個使用 wxPython 作為 GUI 的程式,我想做一些類似于(現在似乎已經過時的)傳統 Windows 幫助部分的東西,左邊有一個目錄樹/目錄,一個垂直分隔符,以及您在右側樹中選擇的任何頁面的內容,其中樹和資訊都嵌入螢屏上的斜角區域。在搜索了檔案(和 SO)之后,我似乎無法找到如何做到這一點——但我知道這是可能的。我已經在這樣的框架檔案中看到了螢屏截圖,但是沒有提供代碼(并且螢屏截圖不在與您如何完成此操作相關的頁面上 - 我想說它在用于樹視圖的頁面上或某物)。
附件是我的目標的截圖。它不必像螢屏截圖那樣復雜,我只想要靜態樹的總體概念,甚至只是左側更新右側內容的鏈接串列,但兩個面板都設定為斜面框架(在這個詞的常識中)中間有一個豎線。
有人知道怎么做嗎?
編輯因為人們似乎誤解了這個問題。我不需要任何人撰寫代碼來為我生成影像中那樣的框架。我只想知道 wxPython 中是否有一種方法可以使面板顯示在框架中,影像中的樹和內容部分的方式。簡單地將兩個面板設定為一個框架是微不足道的,但是除非您border=somevalue向sizer.Add()設定框架時呼叫,然后“分隔符”只是一個沒有吸引力的灰色區域。抱歉,我無法顯示代碼;如果我知道創建這樣一個插入面板的代碼,我就不會在這里了。我可以證明我知道如何將多個面板添加到單個框架中,并根據另一個面板中的處理程式捕獲的事件動態更新一個面板,如果這有幫助的話,但我認為這不是特別相關。

uj5u.com熱心網友回復:
根據我的評論, awx.SplitterWindow可能最適合您正在尋找的內容。
我的一個專案中的 SplitterWindow 示例:

它并沒有接近復制您的示例,但它確實說明了事物的外觀和感覺,一個管理兩個子視窗的類。
uj5u.com熱心網友回復:
您沒有嘗試向我們展示您為實作這項作業所做的作業。您的問題似乎是要求其他人為您完成所有作業。
這是一個簡單的程式,它創建了兩個面板,左側是樹,右側是文本控制元件。剩下的交給你
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://www.uj5u.com/houduan/324640.html
上一篇:如果缺少所需資訊,請鎖定tk按鈕
