Nella mia applicazione wxPython ho creato uno wx.ScrolledPanel
, in cui c'è un grande wx.StaticBitmap
che deve essere fatto scorrere.Scorrere attraverso un `wx.ScrolledPanel` con la rotellina del mouse e i tasti freccia
Le barre di scorrimento appaiono e io posso scorrere con loro, ma mi piacerebbe anche essere in grado di scorrere con la rotella del mouse e i tasti freccia sulla tastiera. Sarebbe bello se anche "Home", "Pagina su" e quegli altri tasti funzionassero come previsto.
Come posso fare?
UPDATE:
vedo il problema. ScrolledPanel è in grado di scorrere, ma solo quando è messo a fuoco. Il problema è, come posso essere messo a fuoco? Anche facendo clic su di esso non lo fa. Solo se metto un controllo testuale al suo interno posso concentrarmi su di esso e quindi scorrere con la rotella. Ma non voglio avere un controllo del testo. Quindi, come faccio a focalizzarlo?
UPDATE 2:
Ecco un esempio di codice che illustra questo fenomeno. Non notare per vedere come un controllo del testo fa funzionare la rotellina del mouse.
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()
Ma dove metterlo? Potrei voler spostare lo stato attivo su qualche altro widget e poi tornare di nuovo su ScrolledPanel. –
1. Vedere la domanda nel mio primo commento. 2. Sì, ho chiamato SetupScrolling. 3. Devo davvero reinventare la ruota con la chiave di casa? WxPython non lo implementa? –
Qualcosa è strano. Ad esempio nella demo wxPython, quando il mouse si trova su ciascun pannello, quel pannello scorrerà con la rotellina. Quindi alcune domande. Se chiami 'SetFocus' funziona? Se si prova a scorrere nel modo normale, facendo clic sulla barra di scorrimento e spostandosi, si sposta? E se usi immediatamente la rotellina, funziona allora? – tom10