Zdravím, mám trošku problém s widgetem Text z Tkinteru. Snažím se udělat pomocí něj něco jako dinamicky se měnící Entry. Nebo jinak: zařídit to tak, abych začínal s jednořádkovým Textem a ten se mi potom podle potřeby zvětšoval a zalamoval řádky... zkoušel jsem k tomu využít indexi, ale narazil jsem na problém, jeden je spíš nepříjemnost než problém, ale z jakéhosi mě neznámého důvodu začínám vždy s indexem 2.0 místo 1.0 a za další text se mi v jednořádkovém Textu nezalamuje ale pokračuje pořád dál na jedné řádce. Budu vděčný za jakoukoliv radu.. :)
Fórum › Python
Text
![](img/forum_vlakno_help_vyreseno.png)
např.
from Tkinter import *
def kontrola(objekt):
print objekt.widget.index(END)
root=Tk()
text=Text(height=1)
text.bind('<Key>',kontrola)
text.pack()
mainloop()
Co se týče toho zalamování s tím bych až zas tak zásadní problém neměl, kdyby byla všechna písmena stějně široká,.. takže občas mi to vychází, že se mi ten text zalomí až za "koncem Textu" a někdy několik znaků před ním...
Aha :) díky, to písmo mě taky napadlo, ale doufal jsem že to ještě vymyslím něják s hezčímpísmem.. jinak kdyby někdo řešil něco podobného tak já jsem to udělal takhle
from Tkinter import *
def radkovani(text):
for i in range(len(text)-1,0,-1):
zbytek=''
if text[i]==' ':
zbytek=str(len(text[:i+1]))
pomlcka=0
return [zbytek,pomlcka]
if not(zbytek):
pomlcka=1
zbytek=str(len(text)-1)
return [zbytek,pomlcka]
def zalomeni(objekt):
sirka=int(objekt.widget['width'])-1
radku=int(objekt.widget['height'])
text=objekt.widget.get(str(radku)+'.0', str(radku)+'.end')
if sirka<len(objekt.widget.get(str(radku)+'.0', str(radku)+'.end')):
pozice=str(radku)+'.'+radkovani(text)[0]
objekt.widget.config(height=str(radku+1))
if not(radkovani(text)[1]):
objekt.widget.insert(pozice, '\n')
elif radkovani(text)[1]:
objekt.widget.insert(pozice, '-\n')
elif text=='':
if radku!=1:
objekt.widget.config(height=str(radku-1))
objekt.widget.delete(str(radku)+'.end')
root=Tk()
text=Text(root, font='courier 10',width=30, height=1)
text.bind('<Key>',zalomeni)
text.pack()
mainloop()
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 4 hosté
Podobná vlákna
Text — založil asjdkdaskjd
Vertikální text — založil homelin
Natočený text — založil geroj
Moderátoři diskuze