亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

添加自定義類小部件時 PanedWindow 沒有子級

添加自定義類小部件時 PanedWindow 沒有子級

MM們 2023-07-27 10:06:54
這是我面臨的一個非常特殊的問題,盡管這可能是因為我對 TKinter 的內部運作缺乏了解。我正在嘗試創建一個名為 ScrollableFrame 的類,它繼承自 Frame 并將其添加到 PanedWindow 小部件中。假設我添加一個普通框架:main_panel = PanedWindow()main_panel.pack()settings_frame = Frame()main_panel.add(settings_frame)該代碼有效,當我調用時main_panel.children我可以看到框架。當我使用 ScrollableFrame 時,如下所示:class ScrollableFrame(Frame):    def __init__(self, **kw):        try:            super().__init__(**kw)            self._canvas = Canvas(self)            self._frame = Frame(self._canvas)            self._scrollbar = Scrollbar(self._canvas, orient=VERTICAL, command=self._canvas.yview)            self._canvas.configure(yscrollcommand=self._scrollbar.set)        except Exception as e:            print(e)main_panel = PanedWindow()main_panel.pack()settings_frame = ScrollableFrame()main_panel.add(settings_frame)當我調用時, main_panel 報告根本沒有子項main_panel.children。有人遇到過這種情況嗎?提前致謝。
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

該小組報告說沒有孩子,因為它沒有孩子。您沒有將窗格窗口作為父窗口傳遞,ScrollableFrame以便滾動框架成為根窗口的子窗口。

如果您希望可滾動框架成為窗格窗口的子窗口,則需要將窗格窗口設為其父窗口。您需要傳遞main_panelScrollableFrame. 由于您的實現ScrollableFrame不采用位置參數,因此您必須將父級指定為master關鍵字參數:

settings_frame = ScrollableFrame(master=main_panel)

pack您還存在一個問題,即您沒有為畫布、框架和滾動條調用 、place或。grid這不會影響您所詢問的父/子問題,但會阻止這些小部件可見。

您也不應該將滾動條放在畫布內。這將導致滾動條位于靠近右邊距繪制的對象的頂部。


查看完整回答
反對 回復 2023-07-27
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號