2013-02-28 78 views
0

我目前有一個wxPanel,我通過使用wx.PaintDC的設備上下文繪製線條,文本等來響應繪製事件。但是,我的繪圖可能會超出面板的大小,並會從可見屏幕上繼續顯示。要看到更多的圖紙的唯一方法是擴大應用程序窗口,這是不切實際的,並且仍然可能不允許在非常大的圖紙情況下看到完整的圖紙。理想情況下,我希望能夠滾動繪圖,以便應用程序窗口不需要調整大小,並可以看到大圖。在wxPython中滾動畫框

環顧四周,似乎我可能想使用wxScrolledPanel而不是wxPanel。但是,我沒有成功使用這個 - 使用wxScrolledPanel只在使用控件(例如按鈕,文本字段)時才工作,而不是在設備上下文中繪製?

滾動已繪製面板的適當方法是什麼?

回答

2

它應該與一個ScrolledPanel一起工作,但如果你不在面板上有其他的小部件,它可能不是正確的答案,因爲它取決於有一個sizer來設置虛擬大小。

嘗試使用wx.ScrolledWindow代替,並在演示中查看它的示例中的代碼。基本上你只需要設置窗口的虛擬大小,它會照顧滾動條併爲你滾動。您還需要在繪畫事件處理程序中調用PrepareDC,以便使繪圖偏移以匹配滾動的視口原點。

+1

我整個ScrolledWindow演示來提供的wxPython曾幾何時,並已與該擺弄周圍 - 該解決方案是完全按照你描述。之前嘗試使用ScrolledPanel時遇到的問題似乎是因爲我只調用SetVirtualSize,而我也需要調用SetScrollRate。我最初並沒有調用PrepareDC,導致繪圖不能像滾動一樣更新。我已將此標記爲答案,謝謝。 – KingJ 2013-02-28 23:02:20