Форум сайта python.su
Здравствуйте.
Всего несколько часов изучаю Python и вообще программирование, поэтому не судите строго за ламерский вопрос..
Итак, я хочу при двойном щелчке на файл .py получать окошко ‘hello world!’.
На данный момент сделал GUI в Qt 4.8.4 на Python 3.3. Это окошко я могу запускать из командной строки и все работает как надо, но хотелось бы запускать простым двойным щелчком.
Я так понимаю, что когда я щелкаю по .py-файлу вылетает cmd, сама программа мгновенно исполняется и все закрывается. Так вот есть-ли способ остановить это мгновенное выполнение? Я знаю, что обычно ставится строка input(), но я ее тыкаю в разные места исходного кода и никакого эффекта не наблюдается. К тому же, такой вариант не слишком изящный. Я хочу чтоб, программа и cmd закрывались по нажатию крестика на окошке.
Офлайн
Целых ПАРУ часов изучаете Python и уже за GUI взялись? ну гений, что тут сказать.
Python программы принято запускать из cmd, если хотите в windows по двойному щелчку, то делайте. ЧТо касается GUI - называйте исполняемый файл с расширением *.pyw и привязывайте его в Windows на исполнение через pythonw.exe.
Консольных програм это не касатеся, а то что вы хотите - ну это милион милионов раз обсуждалось на каждом первом форуме по программированию на python. Дружите чаще с Гуглом, он действительно много знает.
Офлайн
У вас похоже пробел не в питоне а в знаниях об операционной системе.
vshnukrshnaЯ так понимаю консоль у вас открывается, значит и программа запускается. Этот вопрос снят. А так windows решает что делать с файлом по его расширению. По умолчанию установщик питона делает ассоциацию на python.exe файлов *.py *.pyw. Если что-то сломалось по правой кнопке отредактируйте свойства - раздел тип файла - и выберете правильно приложение.
но хотелось бы запускать простым двойным щелчком.
vshnukrshnaНаучите как вы сделали что это не так.
программа и cmd закрывались по нажатию крестика на окошке
print("hello") input()
Отредактировано doza_and (Май 25, 2013 07:38:38)
Офлайн
Спасибо.
Как пример, привожу код:
from PyQt4 import QtGui, QtCore class Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.button = QtGui.QPushButton('Test', self) self.button.clicked.connect(self.handleButton) layout = QtGui.QVBoxLayout(self) layout.addWidget(self.button) def handleButton(self): print ('Hello World') if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
Отредактировано vshnukrshna (Май 29, 2013 03:22:21)
Офлайн
vshnukrshnaОчень странно, ваш код даже без изменений в файле с расширением *.pyw запустился без проблем.
Спасибо.Как пример, привожу код:
Отредактировано ZeUsM (Май 29, 2013 10:46:26)
Офлайн
vshnukrshnaНу дальше берите мою мегапрограмму и посмотрите как она будет себя вести.
то ничего даже не запускается…
print("hello") open("aa.dat","w").write("hello") input()
Офлайн
Спасибо за ответы!
Так, вообщем откатился на python 2.7. Теперь .pyw работает так как надо и тему, в принципе, можно было бы закрывать, но… мне этого мало . Теперь я хочу преобразовать этот .pyw в .exe. Я использовал cx_Freeze, и exe создается и, вроде, даже без ошибок, но не работает. Щелкаю по нему - вылетает CMD и тут же закрывается. И все. Далее, пробую py2exe, но получаю сообщение, что нет какого-то MSVCP90.dll. Ребята, можете доступно объяснить что надо делать и какой компилятор лучше использовать?
Офлайн
vshnukrshnaДля 2.7 я использовал pyinstaller он умеет работать с Qt, делает 1 файл *.exe (опция -F) -w соберет без консоли, можно задавать иконки, использовать UPX и много ещё чего. Использование очень простое (как мне показалось).
Спасибо за ответы!Так, вообщем откатился на python 2.7. Теперь .pyw работает так как надо и тему, в принципе, можно было бы закрывать, но… мне этого мало . Теперь я хочу преобразовать этот .pyw в .exe. Я использовал cx_Freeze, и exe создается и, вроде, даже без ошибок, но не работает. Щелкаю по нему - вылетает CMD и тут же закрывается. И все. Далее, пробую py2exe, но получаю сообщение, что нет какого-то MSVCP90.dll. Ребята, можете доступно объяснить что надо делать и какой компилятор лучше использовать?
Офлайн
ZeUsMСпасибо. Попробовал Pyinstaller2.0.
Для 2.7 я использовал pyinstaller он умеет работать с Qt, делает 1 файл *.exe (опция -F) -w соберет без консоли, можно задавать иконки, использовать UPX и много ещё чего. Использование очень простое (как мне показалось).
Офлайн
vshnukrshnaОчень странно, у меня все собралось и нормально запустилось.
Офлайн