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
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()
Zjistit počet nových příspěvků
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.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 13 hostů
Podobná vlákna
Text — založil asjdkdaskjd
Vertikální text — založil homelin
Natočený text — založil geroj
Moderátoři diskuze