LINUX.ORG.RU

wxWidgets - проблемы (СРОЧНО!!!)


0

0

Очень большая бяка получается. Доделал я тут курсовик на wxWidgets (wxPython). В Линуксе как всегда всё нормально, а в винде куча ошибок. Пару исправил легко, пару только грязными хаками. Осталась одна очень плохая, некоторые элементы созаются динамически, потом дивигаются по экрану, в частности wx.StaticText. так вот когда я его создаю и двигаю, он исчезает и всё:( причём если щёлкнуть например на меню, то всё встаёт на свои места. И ещё, если закрыть динамически создаваемые элемент каким-нибудь окном, они превращаются в чёрное месиво:( и опять же если щёлкнуть на меню, всё нормализуется. Понятно, что нужно вызвать некую процедуру обновления окна, но как и где?? Я в доках не нашёл...

Помогите пожалуйста, если можете, очень срочно надо!

★★★

>Понятно, что нужно вызвать некую процедуру обновления окна, но как и где??

Попробуй метод Yield у wxApp. Версии WxPython в Windows и Linux?

sigill
()
Ответ на: комментарий от CrazyPit

Не совсем понятно в чем проблема , у меня кусок self.labels = [] for y in range( 12 ): self.labels.append( wx.StaticText( self, -1, " " ) ) grid_sizer_2.Add( self.labels[y], ) потом когда надо for x in range( 12 ): self.labels[b].SetLabel( str( x[1][0] ) ) все ок, написана на WinXP, python 2.4, wxPython 2.6, проверял под Linux , python 2.4 , wxPython 2.6.

Под win32 была проблема с обновлением , но в какой версии не помню, в 2.6 у меня нет. P.S. Интересно почему очень часто модули для linux для питона делают под python 2.4, а для win32 чаще всего для 2.3 %)?

anonymous
()
Ответ на: комментарий от anonymous

Я думаю что, в программе производятся какие-то продолжительные вычисления или происходит ожидание ввода и просто не обновляется главное окно. В таком случае Yield спасает :)

sigill
()
Ответ на: комментарий от sigill

Не помогло:(

Traceback (most recent call last):
  File "c:\kurs-2005\alg_view\gui\panel.py", line 56, in zzz
    self.app.Yield()
  File "C:\Python24\Lib\site-packages\wx-2.6-msw-unicode\wx\_core.py", line 5576
, in Yield
    return _core_.PyApp_Yield(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "wxAssertFailure" failed in ..\..\src\m
sw\app.cpp(700): wxYield called recursively

CrazyPit ★★★
() автор топика
Ответ на: комментарий от CrazyPit

Ну как сказать, судя по Traceback не хорошая штука вырисовывается. Вообще сложно сказать, что там у тебя происходит не видя исходника. Если так уж срочно нужно, то можешь мне прислать я постараюсь пофиксить.

sigill
()
Ответ на: комментарий от sigill

ладно забить, я тут грязными хаками добился, чтоб оно появлялось, чёрный мусор осталался, да фиг с ним, курсовик ведь...

CrazyPit ★★★
() автор топика
Ответ на: комментарий от CrazyPit

Да странно это. Я в основном пишу на WxPython именно под Windows, и честно говоря никогда с подобным не сталкивался. Точнее сталкивался, когда нити неправильно использовал и про Yield забывал. Поэтому и интересно, как так у тебя получилось :)

sigill
()
Ответ на: комментарий от sigill

Там фишка в том, что симулируются алгоритмы, они хранятся в отдельных файлах (которые сначала обрабатываются а потом eval'ятся), они представляют собой функции генераторы, т.е. с yield внутри, а внутири этих функций, происходит управление объектами wx, вообщем всё запутано... самое обидное, что под Линуксом ни одной ошибочки.

CrazyPit ★★★
() автор топика
Ответ на: комментарий от sigill

если интересно, пиши на crazypit at pisem net, буду очень балгодарен, если поможешь понять в чём глюк

CrazyPit ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.