Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 21, 2008 10:06:16

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

The gray Cardinal] igor.kaist
Здравствуйте. Простите, что влезаю, но тоже стало любопытно.
Попробовал:
- emacs buttontk.py
- C-c C-c
- Двойной клик на <завершение работы> - вызывается Konqueror и заходит в мою папку /home/mike/Desktop/tcltkrus
- закрываю окно Konqueror - возвращается в emacs, окно Tkinter закрылось - все в порядке.

Пробую : buttonqt.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
button = QtGui.QPushButton(u"Выход")
button.setFont( QtGui.QFont("Arial", 16, QtGui.QFont.Bold) )
QtCore.QObject.connect( button, QtCore.SIGNAL("clicked()"), app, QtCore.SLOT("quit()") )
button.show()
sys.exit(app.exec_())
Опять:
- emacs buttonqt.py
- C-c C-c
- нажимаю <выход> - ничего вообще не происходит(можно жать до посинения).Из консоли все закрывается.

Естественно оба окна(Tkinter,pyqt) закрываются при закрытии окна.

Вывод:

1) Tkinter выиграл у pyqt
2) Лучше работать из консоли :)

с уважением gmorgunov



Офлайн

#2 Окт. 21, 2008 11:26:33

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

Тогда нужно разбираться каким образов emacs запускает питоновский скрипт…
Советую так же почитать про Tkinter вот ЭТУ PDF

The gray Cardinal
Это всё не значит, что я не имею права применять bind и event. И это не значит, что я не имею права применять sys.exit().
Я ж не заставляю… Советовать нынче уже нельзя? Ты имеешь право писат какой угодно код, в том числе и индусткий :-)



Отредактировано (Окт. 21, 2008 11:31:24)

Офлайн

#3 Окт. 25, 2008 21:38:50

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

Ещё один момент. Вот этот скрипт из-под emacs тоже корректно не работает:

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

from Tkinter import *
root = Tk()

Button(root, text = u'Завершение работы', command = root.quit).pack()
root.protocol('WM_DELETE_WINDOW', lambda: 0) # перехват закрытия окна

root.mainloop()
Здесь ситуация ещё смешнее: никаких ошибок не выдаётся, но кнопка “Завершение работы” просто не срабатывает. Слава богу, что после предыдущих экспериментов с emacs я довольно быстро догадался проверить скрипт просто в консоли - там он работает правильно. А ведь это был шанс потратить кучу времени и нервов на бесполезные поиски ошибок в python-коде. После таких фокусов вывод только один - место emacs в помойке.



Офлайн

#4 Окт. 26, 2008 08:44:37

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

Так попробуй command=lambda:root.quit()



Офлайн

#5 Окт. 26, 2008 10:05:15

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

igor.kaist
Так попробуй command=lambda:root.quit()
Как оказалось, достаточно просто написать “destroy” вместо “quit”, т.к. код выполняется в уже запущенном интерпретаторе, который не завершается после выполнения этого кода, root.quit() завершает mainloop, но не удаляет окно с экрана, это происходит при завершении процесса Питона.



Офлайн

#6 Окт. 26, 2008 11:23:47

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

Ну вообще то всегда так делается обычно. У тебя как то все замудренно получается. Почему ты упорно отрицаешь примеры в туториалах? Уже несколько видел твоих примеров, все можно решить и проще и легче



Офлайн

#7 Окт. 26, 2008 11:50:12

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

igor.kaist
Почему ты упорно отрицаешь примеры в туториалах?
Я ничего не отрицаю. Но работать должно всё, а не только избранные примеры в туториалах. И туториалы бывают разные. А метод quit именно приведённым способом использует Марк Лутц в книге “Программирование на Python”, кстати.



Отредактировано (Окт. 26, 2008 11:51:36)

Офлайн

#8 Окт. 26, 2008 22:08:12

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

Неужели у меня одного получаются красивый и нормально работающий гуй на тк??



Офлайн

#9 Окт. 26, 2008 22:18:31

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск скрипта Tkinter из-под Emacs

igor.kaist
Неужели у меня одного получаются красивый и нормально работающий гуй на тк??
Под Windows?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version