Найти - Пользователи
Полная версия: Запуск скрипта Tkinter из-под Emacs
Начало » GUI » Запуск скрипта Tkinter из-под Emacs
1 2
gmorgunov
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
igor.kaist
Тогда нужно разбираться каким образов emacs запускает питоновский скрипт…
Советую так же почитать про Tkinter вот ЭТУ PDF

The gray Cardinal
Это всё не значит, что я не имею права применять bind и event. И это не значит, что я не имею права применять sys.exit().
Я ж не заставляю… Советовать нынче уже нельзя? Ты имеешь право писат какой угодно код, в том числе и индусткий :-)
The gray Cardinal
Ещё один момент. Вот этот скрипт из-под 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 в помойке.
igor.kaist
Так попробуй command=lambda:root.quit()
The gray Cardinal
igor.kaist
Так попробуй command=lambda:root.quit()
Как оказалось, достаточно просто написать “destroy” вместо “quit”, т.к. код выполняется в уже запущенном интерпретаторе, который не завершается после выполнения этого кода, root.quit() завершает mainloop, но не удаляет окно с экрана, это происходит при завершении процесса Питона.
igor.kaist
Ну вообще то всегда так делается обычно. У тебя как то все замудренно получается. Почему ты упорно отрицаешь примеры в туториалах? Уже несколько видел твоих примеров, все можно решить и проще и легче
The gray Cardinal
igor.kaist
Почему ты упорно отрицаешь примеры в туториалах?
Я ничего не отрицаю. Но работать должно всё, а не только избранные примеры в туториалах. И туториалы бывают разные. А метод quit именно приведённым способом использует Марк Лутц в книге “Программирование на Python”, кстати.
igor.kaist
Неужели у меня одного получаются красивый и нормально работающий гуй на тк??
The gray Cardinal
igor.kaist
Неужели у меня одного получаются красивый и нормально работающий гуй на тк??
Под Windows?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB