Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2015 00:42:45

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

doza_and
Вы ничего не сказали о том почему не подходит чисто Web технология. Те сервер + броузер для отображения. Такая связка как раз предназначена для показа текста с разным форматированием.
Есть много оболочек, которые показывают онлайн-словари с помощью webkit. Но я не видел ни одной, где можно было бы целиком выделить термин, состоящий из нескольких слов, и с помощью горячих клавиш либо сделать обратный перевод, либо скопировать этот термин. В Stardict, например, нужно зажать левую кнопку мыши, выделить вручную всю фразу и нажать Control-C. У меня же достаточно навести указатель мыши на нужное слово или фразу (ее границы определяются тэгами) и нажать правую кнопку мыши (либо дойти до нужного термина стрелками на клавиатуре и нажать Control-Enter). Это просто удобнее и быстрее. Я просто не в курсе, можно ли такое делать с помощью веб-технологий.

Офлайн

#2 Сен. 14, 2015 09:34:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

vanvanov
Я просто не в курсе, можно ли такое делать с помощью веб-технологий.
Вообще назначение Веб отображение текста в разных видах.

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p onmouseover=alert('transl') >This is a paragraph.</p>
</body>
</html>
Только кроме python надо будет еще java script html и кое чего еще подучить.



Офлайн

#3 Сен. 14, 2015 10:53:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

> Возможно, в этом мне поможет tk.Table?

Вот не понимаю я тягу к библиотеки из счастливых 90-х. Используй современные тулкиты и будет тебе счастье.
P.S. Про Web технологии с клиент-серверами сразу забываем.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Сен. 16, 2015 23:26:05

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

Rodegast
Вот не понимаю я тягу к библиотеки из счастливых 90-х. Используй современные тулкиты и будет тебе счастье.
Так сложилось, что стал учить tkinter, написал массу кода с ним и ради одного виджета как-то не хочется переходить на что-то другое. Но при наличии времени на обучение все же перейду на qt.

Офлайн

#5 Сен. 16, 2015 23:40:43

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

Для решения вышеобозначенной задачи написал вот такой код.

#!/usr/bin/python3
import tkinter as tk
from time import time
font='LiberationSerif 14'
def add_row(col,row_no):
	root.grid_rowconfigure(row_no,weight=1)
	for i in range(len(col)):
		#tk.Label(root,text=col[i],font=font).grid(row=row_no,column=i,sticky='w',ipadx=7)
		txt=tk.Text(root,font=font,wrap='word')
		txt.insert('1.0',col[i])
		#txt=tk.Entry(root,font=font)
		#txt.insert(0,col[i])
		txt.grid(row=row_no,column=i,sticky='w',ipadx=7)
root=tk.Tk()
article='''Общая лексика	неожиданный поворот дел	попытка	сделка	ход
	ходьба	движение	энергия	мода
	Габон (государство в юго-западной Африке)	присест (Баян)	заход (I cannot do it in one go - Я не могу сделать это за один заход / с первого захода Баян)	готовый к запуску
	готовый к пуску	готовый к эксплуатации	порция вина	порция кушанья
	употребление оборота	собираться сделать (что-л.)	бросок (в спортивных играх, кегельбане)	глоток (вина)
	порция (кушанья)	приступ (о болезни)	вести (о дороге, пути)	стать (стать кем-либо, стать каким-либо // A cop gone bad / We've gone green. / The Merciless is a story of good girls gone evil. 4uzhoj)
Австралийский сленг	принятое решение			
Американизм	с собой (fast food service scardanelli)			
Американизм	try (Let me have a go at solving the problem)			
Военный термин	"начинайте передачу"			
Военный термин	все в порядке	готов	о'кей	поехали
Интернет	переход (кнопка на вебсайте gconnell)			
Контроль качества	проход (надпись на приёмной стороне предельного калибра)			
Макаров	go (в сочетании с последующим герундием выражает действие, соответствующее значению герундия)			
'''
start=time()
article=article.splitlines()
for i in range(len(article)):
	article[i]=article[i].split('\t')
end=time()
print('Этап 1 завершен за %s сек.' % str(end-start))
start=time()
for i in range(len(article)):
	root.grid_columnconfigure(i,weight=1)
	add_row(article[i],i)
end=time()
print('Этап 2 завершен за %s сек.' % str(end-start))
root.mainloop()
Подскажите, пожалуйста, почему формирование виджета занимает аж 1,3 секунды? Кроме того, как сделать так, чтобы ячейка была видна полностью?

Офлайн

#6 Фев. 9, 2016 20:49:02

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

Rodegast
Вот не понимаю я тягу к библиотеки из счастливых 90-х.
Tkinter на 4 года младше Qt.
Используй современные тулкиты и будет тебе счастье.
Попробовал PyQt. Счастье, видимо, заключается в том, чтобы перестать отлаживать старую лажу и начать отлаживать новую. Да, не спорю, технология мощная, но, блин, почему все эти движки, будь то Qt или Tkinter, требуют столько времени на обучение и отладку? Я реально от всего времени, уделенного программированию, потратил половину на GUI.
P.S. Про Web технологии с клиент-серверами сразу забываем.
Оказалось, что самый простой путь - tkinterhtml. Генерируем html-код, рисующий таблицу и отображаем. Да и быстрее это прогружается, чем табличные виджеты или label, хоть в Qt, хоть в Tkinter.

Отредактировано vanvanov (Фев. 9, 2016 20:49:24)

Офлайн

#7 Фев. 11, 2016 09:57:44

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

>> Вот не понимаю я тягу к библиотеки из счастливых 90-х
> Tkinter на 4 года младше Qt.

А вот это не имеет никакого значения. Речи идёт не о том кто-кого старше/моложе, а о технологическом уровне.

> Попробовал PyQt. … Я реально от всего времени, уделенного программированию, потратил половину на GUI.
А никто и не говорил что будет просто.

>> P.S. Про Web технологии с клиент-серверами сразу забываем.
> Генерируем html-код, рисующий таблицу и отображаем.

У тебя задействован веб-сервер?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Фев. 11, 2016 10:06:02

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

Rodegast
А никто и не говорил что будет просто.
Послушать некоторых на форумах - товарищей, которые на VS или Delphi делают формочки, они и за программистов не считают.
У тебя задействован веб-сервер?
Я пишу клиент для одного сервера, предоставляющего доступ к словарям. Нет, моя машина не веб-сервер, если это имеется в виду.

Офлайн

#9 Фев. 11, 2016 20:40:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

Rodegast
А никто и не говорил что будет просто.
vanvanov
Я реально от всего времени, уделенного программированию, потратил половину на GUI.
Интересно а сколько вы его всего потратили?

Наверное от задачи зависит. У нас в типичном проекте расклад:
1 год разработка алгоритма и общение с заказчиком
1 месяц программирование
1 день GUI

Понятно, что на специалистов которые только GUI могут делать странно смотреть.
И понятно что GUI это реально просто!!! (Мы правда рисуем GUI типа черных квадратов а не Девятый вал).



Отредактировано doza_and (Фев. 11, 2016 20:42:59)

Офлайн

#10 Фев. 12, 2016 01:11:08

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Tkinter: Колонки текста

doza_and
Интересно а сколько вы его всего потратили?
Если считать только периоды более-менее активного программирования/обучения, то занимаюсь им лет 5. GUI достаточно плотно стал осваивать с 2013.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version