Text – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Text – Python – Fórum – Programujte.comText – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Fonadius0
Návštěvník
24. 9. 2007   #1
-
0
-

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.. :)

Nahlásit jako SPAM
IP: ...–
Nevěřte moc firmám, které slibují komplexní řešení vašich problémů. Komplexní řešení z pravidla mívají netriviální imaginární část.
Reklama
Reklama
geon0
Grafoman
24. 9. 2007   #2
-
0
-

Myslím, že si to budeš muset naprogramovat. Kontrolovat počet znaků na řádce, a při překročení nějaké hodnoty vložit "\n".
To s tím indexem 2.0 je divné - ukaž demo kod, kde to bude vidět.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Fonadius0
Návštěvník
24. 9. 2007   #3
-
0
-

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...

Nahlásit jako SPAM
IP: ...–
Nevěřte moc firmám, které slibují komplexní řešení vašich problémů. Komplexní řešení z pravidla mívají netriviální imaginární část.
geon0
Grafoman
24. 9. 2007   #4
-
0
-

from Tkinter import *


def kontrola(objekt):
print objekt.widget.index(INSERT)

root=Tk()
text=Text(height=1)
text.bind('<Key>',kontrola)
text.pack()


mainloop()


Stejně široká písmena?: font="courier" ?

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Fonadius0
Návštěvník
26. 9. 2007   #5
-
0
-

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()

Nahlásit jako SPAM
IP: ...–
Nevěřte moc firmám, které slibují komplexní řešení vašich problémů. Komplexní řešení z pravidla mívají netriviální imaginární část.
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Podobná vlákna

Text — založil xeonikx

Text — založil asjdkdaskjd

Text — založil Anonymní uživatel

Text v SDL — založil Newbie

Tkinter a text — založil myky

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý