2010-10-05 2 views
0

Я бы не подумал, что это будет так сложно. Я пытаюсь получить что-то вроде этого:Как я могу поместить 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() 

ответ

0

Что не так с примером? Для меня это работает так, как ожидалось.

+0

Хм. Когда я запускаю его в python, он работает нормально, но нарушение утверждения заставило меня думать, что я делаю что-то неправильно. В реальном приложении все делалось с ошибкой при создании gui, но это, похоже, не связано с нарушением утверждения. –

Смежные вопросы