私のwxPythonアプリケーションでは、wx.StaticBitmap
がスクロールする必要があるwx.ScrolledPanel
を作成しました。マウスホイールと矢印キーで `wx.ScrolledPanel`をスクロール
スクロールバーが表示され、スクロールできますが、マウスホイールとキーボードの矢印キーを使用してスクロールすることもできます。 "ホーム"、 "ページアップ"、その他のキーも期待どおりに機能するといいでしょう。
どうすればよいですか?
UPDATE:
私はこの問題を参照してください。 ScrolledPanelはスクロールすることができますが、フォーカスが当たっている場合にのみスクロールできます。問題は、どのように私はフォーカスの下になることができますか?それをクリックしてもそれはしません。私はそれの中にテキストコントロールを置く場合のみ、私はそれに焦点を当てることができますので、ホイールでスクロールします。しかし、私はそれにテキストコントロールを持っているとは思わない。だから私はどのようにそれに焦点を当てるのですか?
UPDATE 2:
ここでは、この現象を示すサンプルコードです。コメントを外して、テキストコントロールがマウスホイールをどのように動作させるかを確認します。
import wx, wx.lib.scrolledpanel
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
scrolled_panel = \
wx.lib.scrolledpanel.ScrolledPanel(parent=self, id=-1)
scrolled_panel.SetupScrolling()
text = "Ooga booga\n" * 50
static_text=wx.StaticText(scrolled_panel, -1, text)
sizer=wx.BoxSizer(wx.VERTICAL)
sizer.Add(static_text, wx.EXPAND, 0)
# Uncomment the following 2 lines to see how adding
# a text control to the scrolled panel makes the
# mouse wheel work.
#
#text_control=wx.TextCtrl(scrolled_panel, -1)
#sizer.Add(text_control, wx.EXPAND, 0)
scrolled_panel.SetSizer(sizer)
self.Show()
if __name__=="__main__":
app = wx.PySimpleApp()
my_frame=MyFrame(None, -1)
#import cProfile; cProfile.run("app.MainLoop()")
app.MainLoop()
ただし、どこに挿入しますか?フォーカスを他のウィジェットに変更して、ScrolledPanelにもう一度戻ってみたいかもしれません。 –
1.私の最初のコメントの質問を参照してください。 2.はい、私はSetupScrollingを呼び出しました。 3.私は本当にホームキーの事でホイールを再発明する必要がありますか? wxPythonはこれを実装していませんか? –
何かが奇妙です。たとえば、wxPythonのデモでは、マウスを各パネル上に置くと、そのパネルがホイールとともにスクロールします。だから、いくつかの質問。 'SetFocus'を呼び出すと動作しますか?通常の方法でスクロールしようとすると、スクロールバーをクリックして移動すると移動しますか?スクロールホイールをすぐに使用すると、それは動作しますか? – tom10