Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2016 18:03:57

AriosJentu
Зарегистрирован: 2016-11-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

wxPy Scroll Panel

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

Отредактировано AriosJentu (Ноя. 19, 2016 18:05:55)

Офлайн

#2 Дек. 10, 2016 12:24:33

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

wxPy Scroll Panel

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.



Отредактировано leonid_10 (Дек. 10, 2016 12:25:07)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version