如何将wx.ScrolledWindow放入wx.SplitterWindow中?
我没想到这会这么棘手。我想要实现的效果是这样的:
X | X
这里的两个X都是可以滚动的窗口,里面会有很多文字,而'|'是一个“分隔线”,把这两个窗口分开。我想要的效果就像大多数视觉比较工具给出的那样。不过,我现在遇到的问题是,我违反了一些约束条件。当我直接用Python运行时,实际上画出来的效果差不多,虽然有些地方的大小不太合适,但还是能看到我想要的效果。不过,我的项目使用了pybliographer,这个在遇到约束条件违规时会直接退出。我是不是做错了什么?有没有更简单的方法来实现这个?
我修改了一下分隔窗口的示例代码,使用了可滚动的窗口。我先把面板放进可滚动的窗口里,然后再用这个来设置滚动条,就像wxpython wiki里的第二个示例(http://wiki.wxpython.org/ScrolledWindows,抱歉新用户不能发两个链接)。
import wx
class Splitterwindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(350, 300))
quote = '''Whether you think that you can, or that you can't, you are usually right'''
splitter = wx.SplitterWindow(self, -1)
scroll1 = wx.ScrolledWindow(splitter,-1)
panel1 = wx.Panel(scroll1, -1)
wx.StaticText(panel1, -1, quote, (100, 100), style=wx.ALIGN_CENTRE)
panel1.SetBackgroundColour(wx.LIGHT_GREY)
panel1.SetAutoLayout(True)
panel1.Layout()
panel1.Fit()
scroll_unit = 50
width,height = panel1.GetSizeTuple()
scroll1.SetScrollbars(scroll_unit,scroll_unit,width/scroll_unit,height/scroll_unit)
scroll2 = wx.ScrolledWindow(splitter,-1)
panel2 = wx.Panel(scroll2, -1)
wx.StaticText(panel2, -1, quote, (100, 100), style=wx.ALIGN_CENTRE)
panel2.SetBackgroundColour(wx.WHITE)
panel2.SetAutoLayout(True)
panel2.Layout()
panel2.Fit()
scroll_unit = 50
width,height = panel2.GetSizeTuple()
scroll2.SetScrollbars(scroll_unit,scroll_unit,width/scroll_unit,height/scroll_unit)
splitter.SplitVertically(scroll1, scroll2)
self.Centre()
self.Show(True)
app = wx.App()
tmp = Splitterwindow(None, -1, 'splitterwindow.py')
app.MainLoop()
1 个回答
0
这个例子有什么问题吗?对我来说,它的表现是正常的。