在我的应用中,我需要制作约150个动态创建的面板,其中包含说明和按钮。
每个按钮将在新窗口中显示另一个URL。
例如,当您将主窗口滚动到中间并单击面板上带有URL显示的新框架上的按钮时。
当您关闭它时,滚动条将移至主框架的顶部。
如何防止这种情况发生,并保持滚动条在主框架中的位置与打开子窗口之前相同?
谢谢您的帮助!
import wx
import wx.lib.scrolledpanel
import wx.html2
class Start ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title =
wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 800,800 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
self.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHT ) )
bSizer23 = wx.BoxSizer( wx.VERTICAL )
self.m_scrolledWindow2 = wx.ScrolledWindow( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL|wx.VSCROLL )
self.m_scrolledWindow2.SetScrollRate( 5, 5 )
bSizer24 = wx.BoxSizer( wx.VERTICAL )
for x in range(100):
self.m_panel1 = wx.Panel( self.m_scrolledWindow2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
self.m_panel1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOBK ) )
bSizer25 = wx.BoxSizer( wx.VERTICAL )
self.m_panel2 = wx.Panel( self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.Size( 500,300 ), wx.TAB_TRAVERSAL )
bSizer26 = wx.BoxSizer( wx.VERTICAL )
#buttons
bSizer12 = wx.BoxSizer( wx.HORIZONTAL )
bSizer12 = wx.BoxSizer( wx.HORIZONTAL )
self.strona_projektu_button = wx.Button( self.m_panel2, wx.ID_ANY, u"Button", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer12.Add( self.strona_projektu_button, 0, wx.ALL, 5 )
self.strona_projektu_button.Bind(wx.EVT_BUTTON, lambda evt, name='Button': self.show_web(evt,))
self.m_panel2.SetSizer( bSizer26 )
self.m_panel2.Layout()
bSizer26.Fit( self.m_panel2 )
bSizer25.Add( self.m_panel2, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
self.m_panel1.SetSizer( bSizer25 )
self.m_panel1.Layout()
bSizer25.Fit( self.m_panel1 )
bSizer24.Add( self.m_panel1, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
self.m_scrolledWindow2.SetSizer( bSizer24 )
self.m_scrolledWindow2.Layout()
bSizer24.Fit( self.m_scrolledWindow2 )
bSizer24.Layout()
bSizer23.Add( self.m_scrolledWindow2, 1, wx.EXPAND |wx.ALL, 5 )
self.SetSizer( bSizer23 )
self.Layout()
self.Centre( wx.BOTH )
def show_web( self, event, ):
dialog = MyBrowser(None)
dialog.browser.LoadURL('https://google.com')
dialog.Show()
class MyBrowser(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.Bind ( wx.EVT_CLOSE, self.on_close )
sizer = wx.BoxSizer(wx.VERTICAL)
self.browser = wx.html2.WebView.New(self)
sizer.Add(self.browser, 1, wx.EXPAND, 10)
self.SetSizer(sizer)
self.SetSize((1000, 700))
def on_close ( self, event ):
self.Destroy()
if __name__=='__main__':
app = wx.App(0)
frame = Start(None).Show()
app.MainLoop()