Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 29, 2011 10:01:42

Gradient
От:
Зарегистрирован: 2009-06-03
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter - практические вопросы

Решил портировать своё приложение с pyQT на более легковесный tkinter.

Есть много “простых” вопросов, с которыми по документации я не разобрался.
Полезными будут как просто идеи вроде “см. tkMegaFeature”, так и ссылки на простые примеры.
Согласен, что по некоторым пунктам нужны примеры кода. Напишу их вечером.

Как определить разрешение экрана пользователя?
даже без предположения того, что у пользователя несколько мониторов, сделать это у меня не получилось.

Как программно развернуть главное окно на весь экран?

Как задать главному окну приложения иконку и строку в заголовке?
Можно ли просто получить виндовый handle окна виджета?
Пытался посмотреть это дело у IDLE, но у меня даже “списать” не получилось :-)
У меня класс главного окна наследуется от Frame. Надо от чего-то другого?

Как передвинуть уже созданное окно?
на init я могу задать расположение и координаты, но передвинуть окно у меня так и не получилось.
вариант с пересозданием окна считаю слишком абсурдным.

Как сделать нормальный resize окна? Я пытался пользоваться и grid и pack и даже добился “интересных” результатов. Но при изменении размера окна контролы остаются на своих местах (при grid) или центрируются (если pack). А надо, чтобы text “растягивался”. Что я упустил?

По виджету Text есть несколько вопросов (но вероятно есть какой-то другой виджет, поддерживаючий нужные фичи и выбор Text был неудачен)

Как по даблклику получить текст строки, на которой кликнули (без учёта форматирования)?
не получается ни назначить обработчик на даблклик ни получить текст из строки

Как отображать пробелы и табуляции?

есть только идеи по замене символов или вставке картинок,
но реализовать пока не пытался: думаю, есть способ проще.

может, для моих целей более подойдёт другой виджет?



Офлайн

#2 Июнь 29, 2011 12:26:47

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

tkinter - практические вопросы

в гугле найдете все ответы, или в http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf

from Tkinter import *

root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()

print 'screen:',w,h
у окошка смотрите метод geometry

у текста tag_config, tag_bind



Офлайн

#3 Июнь 29, 2011 13:23:42

Gradient
От:
Зарегистрирован: 2009-06-03
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter - практические вопросы

Хорошая pdfка, именно её я и читал. И ещё какое-то хорошее руководство. Но тем не менее.
Код ваш работает, спасибо. Вечером отпишусь с кодом, а то так и впрямь ниочём.

Из той кучи вопросов неясным остался лишь “как отображать непечатаемые символы”. И гугл что-то не помогает.



Офлайн

#4 Июнь 30, 2011 00:27:52

Gradient
От:
Зарегистрирован: 2009-06-03
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter - практические вопросы

Уже, скорее, ночь, но лучше поздно, чем никогда.

Завис на изменении размеров окна.

from tkinter import *

class WND(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, height=480, width=300)

self.eLine = Entry(self, relief="ridge")
self.tx = Text(self)

self.grid(sticky=N+E+S+W)
self.eLine.grid(sticky=W+E)
self.tx.grid(sticky=N+S+W+E)

if __name__ == '__main__':
root = Tk()
w = WND(master=root)
w.mainloop()
Не работает! При старте контролы нормально позиционируются, но при изменении размеров окна остаются на своих местах. Что я упустил?



Отредактировано (Июнь 30, 2011 00:29:10)

Офлайн

#5 Июнь 30, 2011 09:32:50

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

tkinter - практические вопросы

Все таки пдфку вы не читали.
http://ru.wikiversity.org/wiki/%D0%9A%D1%83%D1%80%D1%81_%D0%BF%D0%BE_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B5_Tkinter_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_Python
Попробуйте на русском перечитать.

смотрите менеджер геометрии



Отредактировано (Июнь 30, 2011 09:34:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version