Я бы не подумал, что это будет так сложно. Я пытаюсь получить что-то вроде этого:Как я могу поместить wx.ScrolledWindow внутри wx.SplitterWindow?
X | X
Где обе Xs прокручиваютсяWindows, которые в конечном итоге содержат много текста и '|' является «разделителем», разделяющим два. Я хочу что-то вроде того, что вам нравится в большинстве визуальных различий. Хотя я не могу заставить это работать. Моя большая проблема сейчас в том, что я нарушаю некоторые утверждения. Когда я запускаю его в прямом питоне, он на самом деле рисует примерно то, что я ожидаю, минус некоторое уточнение соответствующих размеров, несмотря на нарушения ограничений. Мой проект использует pybliographer, хотя, который выходит на нарушения ограничений. Я делаю это неправильно? Есть ли более простой способ сделать это?
Я включил простую модификацию кода примера splitterwindow для использования scrolledwindows. Сначала я устанавливаю панели внутри прокручиваемых окон, а затем использую их для установки полос прокрутки, как во втором примере в 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()
Хм. Когда я запускаю его в python, он работает нормально, но нарушение утверждения заставило меня думать, что я делаю что-то неправильно. В реальном приложении все делалось с ошибкой при создании gui, но это, похоже, не связано с нарушением утверждения. –