Trong ứng dụng wxPython của tôi, tôi đã tạo một wx.ScrolledPanel
, trong đó có một số lớn wx.StaticBitmap
cần được cuộn.Cuộn qua một `wx.ScrolledPanel` bằng các phím chuột và phím mũi tên
Thanh cuộn xuất hiện và tôi có thể cuộn với chúng, nhưng tôi cũng muốn có thể cuộn bằng bánh xe chuột và các phím mũi tên trên bàn phím. Nó sẽ là tốt đẹp nếu "Home", "Page Up", và những phím khác cũng sẽ hoạt động như mong đợi.
Làm cách nào để thực hiện việc này?
UPDATE:
Tôi thấy vấn đề. ScrolledPanel có thể cuộn, nhưng chỉ khi nó đang được tập trung. Vấn đề là, làm thế nào để tôi được tập trung? Ngay cả khi nhấp vào nó cũng không làm được. Chỉ khi tôi đặt một điều khiển văn bản bên trong nó, tôi có thể tập trung vào nó và do đó di chuyển với bánh xe. Nhưng tôi không muốn có một điều khiển văn bản trong đó. Vậy làm cách nào để tôi tập trung?
UPDATE 2:
Đây là một mẫu mã cho thấy hiện tượng này. Bỏ ghi chú để xem cách điều khiển văn bản làm cho bánh xe chuột hoạt động.
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()
Nhưng phải đặt ở đâu? Tôi có thể muốn thay đổi tập trung vào một số tiện ích khác, sau đó quay lại ScrolledPanel. –
1. Xem câu hỏi trong bình luận đầu tiên của tôi. 2. Có, tôi đã gọi là SetupScrolling. 3. Tôi có thực sự cần phải tái tạo lại bánh xe bằng chìa khóa nhà không? Không wxPython thực hiện điều này? –
Điều gì đó lạ. Ví dụ trong bản demo wxPython, khi chuột nếu trên mỗi bảng điều khiển, bảng điều khiển đó sẽ cuộn bằng bánh xe. Vì vậy, một vài câu hỏi. Nếu bạn gọi 'SetFocus' có hoạt động không? Nếu bạn cố gắng cuộn theo cách thông thường, bằng cách nhấp vào thanh cuộn và di chuyển, nó có di chuyển không? Và nếu bạn ngay lập tức sử dụng bánh xe di chuyển, nó có hoạt động không? – tom10