Программа PyGtk не отвечает в Windows

Мне только что удалось заставить py2exe работать на виртуальной машине Windows, но я наткнулся на другую проблему, которой у меня не было сразу после того, как я установил на эту машину GTK, Pango, Gobject и т. д.: когда я запускаю скрипт Python, появляется окно, но оно сразу перестает отвечать. Это тоже происходит, если я открываю интерпретатор Python и набираю:

import gtk
w = gtk.Window()
w.show()

Мне пока не разрешено публиковать какие-либо изображения, но вот ссылка на скриншот: http://i.stack.imgur.com/3RJ0n.png

Это проблема для меня, так как если я создаю исполняемый файл с помощью py2exe, я получаю тот же результат при выполнении программы.

Спасибо за вашу помощь и за ваше время, потраченное, чтобы помочь мне! :)

Решено! Кажется, установка ActivePython, установка среды выполнения GTK, PyCairo, PyObject, PyGtk в качестве администратора с режимом совместимости для Windows Xp Service Pack 2 решила проблему. Спасибо adw за вашу помощь и предложения!


person Calin    schedule 24.10.2010    source источник


Ответы (2)


Вам нужно запустить основной цикл, чтобы GTK мог обрабатывать события, рисовать в окне и т. д.

Добавьте это в свою программу:

gtk.main()

См. также: http://live.gnome.org/PyGTK/QuickStart

person adw    schedule 24.10.2010
comment
Не волнуйтесь, я не новичок, я уже добавил это в конец файла. Проблема не оттуда. То, что я показал выше, находится в интерпретаторе python (вам не нужно запускать цикл) - person Calin; 25.10.2010
comment
Ваша обычная машина для разработки работает под управлением Windows, Linux или чего-то еще? а программа там нормально работает? Не могли бы вы предоставить минимальную программу, которая показывает проблему? - person adw; 25.10.2010
comment
Я запускаю Linux, а Windows запускается на виртуальной машине. Даже простая программа типа: import gtk; w = gtk.Окно(); ш.шоу(); gtk.main(); получает эту ошибку. Если программа является программой PyGtk, она просто перестает отвечать сразу после открытия. Я привел пример программы, которая не работает по этой ссылке pastebin.com/An6z5Wti Примечание. Это не не единственная программа, которая не работает, это просто пример. Любая программа Gtk перестает отвечать (если я нажму на нее, появится диалоговое окно «Завершить сейчас»). Спасибо за помощь мне! - person Calin; 25.10.2010
comment
Я знаю, что путь к файлу Glade - /home/calin/..., но он изменен в других программах, поэтому он не работает не по этой причине. Может быть, это из-за первой строки (#!/usr/bin/env python)? - person Calin; 25.10.2010
comment
Вы не можете использовать такие темы. Во-первых, постарайтесь вообще не использовать потоки. Если у вас есть какая-то долго работающая функция, которую вы действительно не можете разделить, вы можете поместить ее в поток, но вы не можете получить прямой доступ к объектам gtk из вторичного потока. Вместо этого для доступа к gtk из другого потока используйте gobject.idle_add. См. также: faq.pygtk.org/index.py?req =show&file=faq20.001.htp - person adw; 25.10.2010
comment
если я не использую потоки, мои программы просто становятся серыми, если подвергаются интенсивной обработке. Я не знаю, как правильно их использовать, но я проверю эту ссылку. Проблема не в потоках, так как любое приложение pygtk зависает. - person Calin; 25.10.2010

Решено! Кажется, установка ActivePython, установка среды выполнения GTK, PyCairo, PyObject, PyGtk в качестве администратора с режимом совместимости для Windows Xp Service Pack 2 решила проблему. Спасибо adw за вашу помощь и предложения!

person Calin    schedule 26.10.2010