Chtěl jsem se zeptat, když udělám výpis dlouhého seznamu do okna pomocí GRID, tak nemůžu žádným způsobem scrollovat. Dá se to nějak vyřešit? Načítám tak několik sloupců a potřebuji je mít pěkně zarovnané pod sebou. Děkuji.
Fórum › Python
Text do sloupců a scroll, Grid
Moc tomu nerozumím, protože mi připadá že scrolování absolutně nesouvisí s grid. Prosím dej sem funkční zkrácený program (pokud již sám o sobě není krátký dost), bez zbytečných věcí, které s problémem nesouvisí, ať to vidíme co vůbec chceš.
když budu mít seznam který bude mít třeba 1000 řádků tak aby se v něm dalo pohybovat a údaje byli pěkně zarovnané ve sloupcích.
import Tkinter as tki
hl_okno=tki.Tk()
seznam=[['Pavel', '1'], ['Sarka', '2'], ['a', '1'], ['d', '2'], ['f', '3']]
r=0
for jmen, tel in seznam:
r = r + 1
napis1=tki.Label(hl_okno, text=jmen)
napis1.grid(row=r, column=0)
napis2=tki.Label(hl_okno, text=tel)
napis2.grid(row=r, column=1)
hl_okno.mainloop()
m?m obavu, ?e to nejde viz http://effbot.org/zone/tkinter-scrollbar-patterns.htm.
Je tam i p??klad na pou?it? s ListBoxem, co? by v tv?m p??pad? bylo mo?n? lep?? (stejn? jako v m? http://programujte.com/view.php?cisloclanku=2005102801-Python---12.-lekce ;-) proto?e pak bude? i moci vyb?rat jednu nebo v?ce polo?ek a moci s nimi d?le n?jak pracovat...
Pro velk? z?jem zde v diskuzi o Tkinter jsem se rozhodl p?ed?asn? ukon?it ??st o OOP a za??t s pokra?ov?n?m v Tkinter ;-)
Správně:)
a v čem to bude spočívat;co budeě vysvětlovat?
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Tak jsem to udělal v Textu, ale nevím jak zarovnat sloupce pěkně pod sebe. V listboxu se mi sloupce nepodařilo udělat.
Dik za odpověď.
PS: Supr, že bude pokračovat seriál Tkinter.
# -*- coding: utf-8 -*-
data=[['Pavel', '1'], ['Sarka', '2'], ['asadsadasfasdf', '1'], ['d', '2'], ['f', '3']]
def vypisSeznamu():
ramec = Frame(hlavni)
posuvnik = Scrollbar(ramec, orient=VERTICAL)
seznam=Text(ramec, yscrollcommand=posuvnik.set, wrap=WORD, font="Arial 10")
for jmen, tel in data:
seznam.insert(END, jmen+"t")
seznam.insert(END, tel+"n")
seznam.config(state=DISABLED)
posuvnik.config(command=seznam.yview)
posuvnik.pack(side=RIGHT, fill=Y)
seznam.pack(side=LEFT, fill=BOTH, expand=YES)
ramec.pack(side=LEFT, fill=BOTH, expand=1)
from Tkinter import *
hlavni = Tk()
vypisSeznamu()
hlavni.mainloop()
V?ci, kter? po?aduje?, jsou defacto *tabulka* v gui. Tkinter jako takov? ji nem? p??mo zabudovanou (narozd?l od profi prost?ed? GTK nebo Qt), tak?e m?? dv? mo?nosti:
* podporu tabulek si doinstalujes - http://tkinter.unpythonic.net/wiki/TkTable nebo snad i v pmw nebo bwidget
* nebo to obejdes, ale pak nem??e? ?ekat plnou podporu tabulek, jak jsi t?eba zvykl? s Windows (nap?. online editace)
J? ti porad?m s druh?m, prvn? jsem zkou?el jednou, fungovalo mi to, ale u? si nic nepamatuji.
Nesm?? se sna?it d?lat sloupce, ale naform?tovat ??dku tak, aby byla p?kn? zarovnan?. Pak funguj? jak Listbox tak Text. Listbox je IMHO lep??, d? se pak hezky vyb?rat.
Naform?tov?n? ??dku se ud?l? tak, ?e si ho *cely* p?edem p?iprav??:
radek=jmen+"t"+tel + "n"
radek=radek.expandtabs(20) # tady si nastav?? skute?nou velikost tabu
no a pak ho vkl?d?? bud do textu nebo Listboxu... Nezapome? na nastaven? n?jak?ho neproporcion?ln?ho p?sma - rozhodn? ne Arial
tohle reseni mi uplne staci, dekuji. Mam ale problem s cestinou. Pokud je to v cp1250 tak to funguje dobre, ale v utf-8 to radky ktere maji cesky znaky rozhodi.
# -*- coding: utf-8 -*-
data=[['Pavel', '1'], ['Sarka', '2'], ['asadsadasfasdf', '1'], ['?', '2'], ['f', '3']]
def vypisSeznamu():
ramec = Frame(hlavni)
posuvnik = Scrollbar(ramec, orient=VERTICAL)
seznam=Text(ramec, yscrollcommand=posuvnik.set, wrap=WORD, font="Courier 10")
for jmen, tel in data:
tab=jmen+"t"+tel+"n"
tab=tab.expandtabs(20)
seznam.insert(END, tab)
seznam.config(state=DISABLED)
posuvnik.config(command=seznam.yview)
posuvnik.pack(side=RIGHT, fill=Y)
seznam.pack(side=LEFT, fill=BOTH, expand=YES)
ramec.pack(side=LEFT, fill=BOTH, expand=1)
from Tkinter import *
hlavni = Tk()
vypisSeznamu()
hlavni.mainloop()
jak mam ulozit program do exe
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Funkce .grid() — založil dragon124
Grid - roztazeni tlacitek — založil polerok
Nezobrazuje scroll v IE — založil DuDo
Android Scroll — založil hráč
Výška 100% + scroll — založil Forest
Moderátoři diskuze