Найти - Пользователи
Полная версия: Ошибка в функции wx.ScrollBar - SetScrollbar
Начало » GUI » Ошибка в функции wx.ScrollBar - SetScrollbar
1
Kogrom
Пытаюсь использовать компонент wx.ScrollBar. Мне требуется, чтобы через определенный промежуток времени он менял свои параметры. Соответственно, пытаюсь использовать функцию SetScrollbar, пользуясь документацией по wxWidgets.

То есть в теории приемлема форма:

scroll.SetScrollbar(position=a, thumbSize=b, range=c, pageSize=d, refresh=True)

Но wxPython требует какой-то неизвестный параметр orientation…
Методом проб и ошибок вывел:

scroll.SetScrollbar(orientation=a, position=b, thumbSize=c, range=d)

при этом названия и смысл параметров не совпадают, но соответствуют с порядком в документации wxWidgets. Хотя, может я чего-то не понимаю.
regall
Не знаю какой wx.ScrollBar вы смотрели, но что-то вообще не то:
http://docs.wxwidgets.org/stable/wx_wxscrollbar.html#wxscrollbarctor
Kogrom
regall
Не знаю какой wx.ScrollBar вы смотрели, но что-то вообще не то:
http://docs.wxwidgets.org/stable/wx_wxscrollbar.html#wxscrollbarctor
Про него и говорю. Конкретно про функцию wxScrollBar::SetScrollbar

То есть должен быть примерно такой код:
scroll = wx.ScrollBar(self, -1)
#...
scroll.SetScrollbar(position=a, thumbSize=b, range=c, pageSize=d, refresh=True)
Но в таком виде не работает.

Примечание: пишу здесь a, b, c, d для простоты. В программе у меня на этих местах функции.
Kogrom
Всё-таки хотелось бы, чтобы кто-то подтвердил или опровергнул мои замечания. Я использую версию 2.8.9.2 для Windows. Для проверки можно использовать код:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx

class MainWindow(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title="Test", size=(300, 200))
self.do_layout()
self.Bind(wx.EVT_BUTTON, self.on_button)

def do_layout(self):
sizer = wx.BoxSizer(wx.VERTICAL)

btn = wx.Button (self, wx.NewId(), "Button")
self.scroll = wx.ScrollBar(self, wx.NewId())
btnSizer = wx.BoxSizer()
btnSizer.Add(btn, flag=wx.ALIGN_CENTER)

sizer.Add(btnSizer, proportion=1, flag=wx.ALIGN_CENTER)
sizer.Add(self.scroll, flag=wx.ALIGN_BOTTOM | wx.EXPAND)

self.SetSizer(sizer)
self.Layout()

def on_button(self, evt):
range_ = self.scroll.GetRange() + 1
# must be:
# self.scroll.SetScrollbar(position=0, thumbSize=1, range=range_, pageSize=1, refresh=True)
self.scroll.SetScrollbar(orientation=0, position=1, thumbSize=range_, range=1, refresh=True)

if __name__ == "__main__":
app = wx.PySimpleApp(0)
mainWnd = MainWindow()
mainWnd.Show()
app.MainLoop()
pyuser
так и есть
orientation это position
position это tumbSize
tumbSize это range
ну и range это pageSize
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