Как работать с медленным рендерингом в PyGTK ComboBox - PullRequest
0 голосов
/ 22 декабря 2010

Я реализовал пользовательский CellRenderer в PyGTK, рендеринг которого может занять больше времени, чем в идеале.Может быть несколько изображений, которые необходимо масштабировать, поэтому, когда пользователь нажимает на ComboBox, он даже не отобразит всплывающее окно, пока рендеринг не будет завершен.Если бы я мог показать всплывающее окно, а затем сделать изображение, это было бы хорошо.Вы можете посмотреть его в моем Google Code Repository .

. Я реализовал кэширование, так что после первой загрузки он будет загружаться из одного изображения из памяти или диска, нопервая загрузка может занять 2-4 секунды на ячейку.

Вещи, которые я задумал реализовать, включают всплывающее окно при загрузке приложения, которое заставляет его визуализировать изображение.Похоже, что это не работает в тестах, которые я запускал.

Я также пытался создать CairoContext и поверхность, которая не видна, но мне нужно, чтобы это был gtk.gdk.CairoContext, которыйне думаю, что может быть начато без фактического виджета.Есть вероятность, что я могу сделать это в виджете за кадром, но я не уверен, что это хорошая идея или вообще возможно.

Ответы [ 2 ]

1 голос
/ 01 января 2011

Я использовал Pixmap, который отображался с использованием idle_add после загрузки экрана, так как он не инициализировал окно до тех пор, пока он не отобразился внутри окна на экране. Вы можете найти код в themeselect.py . Посмотрите на load_theme_thumbs () и _get_pixmap ().

0 голосов
/ 23 декабря 2010

Как я уже говорил, я не вижу вреда в рендеринге за кадром, и я сделал это по тем же причинам.Это должно быть возможно, если вы не делаете что-то очень странное.

...