Frameオブジェクトを作成しましたが、これを展開できる幅を制限したいとします。フレーム内の唯一のウィンドウはScrolledWindowオブジェクトで、他のすべての子を含みます。 BoxSizerを垂直に配置したオブジェクトがたくさんあるので、ScrolledWindowオブジェクトがかなり高くなります。右にスクロールバーがありますので、上下にスクロールすることができます。wxPythonのScrolledWindowでFrameの最大幅を設定する
フレームの最大サイズを設定しようとすると問題が発生します。 ScrollledWindowのscrolled_window.GetBestSize()
(またはscrolled_window.GetEffectiveMinSize()
)機能を使用していますが、垂直スクロールバーを考慮していません。私はちょうど少し狭いフレームを持っていると、決して遠くに行くことはない水平スクロールバーがあります。
垂直スクロールバーの幅を補う方法はありますか?もしそうでなければ、スクロールバーの幅をどのようにして手動でそれを私のフレームの最大サイズに加えることができますか?
はここで背が高くなく、狭額縁での例です:
class TallFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title='Tall Frame')
self.scroll = wx.ScrolledWindow(parent=self) # our scroll area where we'll put everything
scroll_sizer = wx.BoxSizer(wx.VERTICAL)
# Fill the scroll area with something...
for i in xrange(10):
textbox = wx.StaticText(self.scroll, -1, "%d) Some random text" % i, size=(400, 100))
scroll_sizer.Add(textbox, 0, wx.EXPAND)
self.scroll.SetSizer(scroll_sizer)
self.scroll.Fit()
width, height = self.scroll.GetBestSize()
self.SetMaxSize((width, -1)) # Trying to limit the width of our frame
self.scroll.SetScrollbars(1, 1, width, height) # throwing up some scrollbars
あなたはこのフレームを作成する場合は、self.SetMaxSize
が狭すぎる設定されていることがわかります。 self.scroll.GetBestSize()
はスクロールバーの幅を考慮していないので、水平スクロールバーが常に存在します。
私は興味がありますが、問題やその答えは分かりません。そのポイントを示す小さなコード例を投稿できますか? – tom10
コードを送信していただきありがとうございます。私はこの問題を見て、それを少しでも回ったが、それを理解しなかった。確かにwxPythonユーザやwxユーザの誰かが知っているはずです。 (スクロールバーを追加する前にすべてのサイズを設定していますが、興味があります) – tom10
なぜ最大サイズを設定しますか?エンドユーザーがあなたのアプリを本当に大きくすることに害は何ですか? –