Найти - Пользователи
Полная версия: wxPy Scroll Panel
Начало » GUI » wxPy Scroll Panel
1
AriosJentu
Приветствую. Буквально 3 дня назад я начал заниматься графической разработкой под Linux на wxPy для сдачи проектов по курсу программирования. На данном этапе я должен написать Paint, и одним из заданий было - написание скроллбаров для пролистывания окна. И с этим у меня случилась проблема. Как угодно пробовал создавать скроллбары для ScrolledWindow виджета, никак не появляются. Был даже случай, когда вроде работает, но панели рисования почему то не редактируется по размеру, и застревает в бесконечном 1х1 пикселей. Пример такого кода я приведу ниже:
 #Панель рисования
DrawScroller = ScrolledWindow(PaintFrame, ID_ANY)
DrawScroller.SetScrollRate(5, 5)
DrawScroller.EnableScrolling(True, True)
DrawScroller.SetSize(Size(685, 600-51))
DrawScroller.Move(Point(115, 0))
DrawPanel = Panel(DrawScroller, ID_ANY)
DrawPanel.SetSize(Size(685, (600-51) ))
DrawPanel.Move(Point(0, 0))
Paint = PaintZone(DrawPanel)
Paint.Clear()
ScrollBarV = BoxSizer(VERTICAL)
ScrollBarH = BoxSizer(HORIZONTAL)
ScrollBarH.Add(DrawPanel)
ScrollBarV.Add(ScrollBarH)
DrawScroller.SetSizer(ScrollBarV)
Но, что характерно, я использую точно такой-же метод создания скроллера (только исключительно вертикального) в классе свойств инструмента. Пример работы находится здесь (Класс ObjectProperties). Прошу прощения за такой страшный код (связи классов, etc), так как мне нужно было быстро переписать работу на другом ЯП, но я столкнулся с такой проблемой. Как можно было бы реализовать стандартные скроллеры так, чтобы это делало вид, что работает?
leonid_10
http://www.java2s.com/Tutorial/Python/0380__wxPython/ScrollbarExample.htm
 import wx
class ScrollbarFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Scrollbar Example', size=(300, 200))
        self.scroll = wx.ScrolledWindow(self, -1)
        self.scroll.SetScrollbars(1, 1, 600, 400)
        self.button = wx.Button(self.scroll, -1, "Scroll Me", pos=(50, 20))
        self.Bind(wx.EVT_BUTTON,  self.OnClickTop, self.button)
        self.button2 = wx.Button(self.scroll, -1, "Scroll Back", pos=(500, 350))
        self.Bind(wx.EVT_BUTTON, self.OnClickBottom, self.button2)
    def OnClickTop(self, event):
        self.scroll.Scroll(600, 400)
        
    def OnClickBottom(self, event):
        self.scroll.Scroll(1, 1)
        
app = wx.PySimpleApp()
frame = ScrollbarFrame()
frame.Show()
app.MainLoop()

В строке
self.scroll.SetScrollbars(1, 1, 600, 400)
единицы - это True.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB