Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Monta Tk-syöttöruutua samaan muuttujaan

Kanarianlintu [03.11.2017 10:42:45]

#

Hei, minulla olisi tällä kertaa tällainen ongelma:
Alla on syöttöruutu, mihin pitäisi syöttää tietoja. Noiden syöttöruutujen määrä riippuu siitä miten paljon niille on tarvetta, minulla on siis laskuri mikä määrittää tuon puolen. Tämähän ei näin toimi, koska näytölle kyllä tulee noita ruutuja, mutta luettavia tietoja on vain yksi "tekstilaatikko". Onko mitenkään mahdollista saada ongelma korjattua esim. tällaisella tavalla, milloin tekstilaatikolla olisi järjestysnumero, tekstilaatikko(laskuri). Suoraan tuo ei ainakaan onnistu.

Kiitos.

tekstilaatikko = Entry(ikkuna, bd =5,width = 10, bg="SpringGreen2")# syöttöruutu
tekstilaatikko.grid(row=1+laskuri, column=5)

Grez [03.11.2017 11:16:40]

#

Teet tekstilaatikkolistan tai taulukon, johon laitat luomasi tekstilaatikot. Yhdessä tekstilaatikkomuuttujassa voi luonnollisesti olla vain yksi tekstilaatikko kerrallaan.

Kanarianlintu [03.11.2017 19:57:57]

#

Voisinko pyytää ihan pientä esimerkkiä:-)

Metabolix [04.11.2017 08:54:23]

#

Kai nyt yleisesti ottaen osaat Pythonin listoja käyttää, kuten oppaissa neuvotaan. Nyt vain laitat listaan tekstilaatikoita.

tekstilaatikot = []

uusi = Entry(foo)
uusi.grid(foo)
tekstilaatikot.append(uusi)

# tulee tekstilaatikot[0], tekstilaatikot[1] jne.

Kanarianlintu [04.11.2017 15:02:30]

#

Hei. Olen koko päivän yrittänyt ymmärtää neuvoasi, mutta en ole tässä onnistunut, vaikka yritys on ollut kova:-)

Hieman vielä kerron tuosta tarpeestani. Osaan jo tehdä Entryjä, joihin voin kirjoittaa vaikka tekstiä ja noutaa näitä tietoja käyttäen get komentoa. Homma toimii hienosti ja voin sitten tallettaa näitä tietoja tiedostoihin. Jos kysymyksessä olisi vaikka viiden eri tiedon tallettaminen syöttökentistä, niin tekisin näitä alla olevia tekstilaatikoita tarvittavan määrän ja siinä se. Kysymykseni oli oikeastaan se, että onko mahdollista tehdä alla olevaa ohjelmaa, jossa tuo tekstilaatikko saisi saisi yhden merkin lisää ja näin ollen get komennolla voisin noutaa noita järjestyksessä. Tuo ei siis toimi, mutta miksi näin ei tapahdu, sitä en tiedä?

Kiitos kärsivällisyydestä:-)

for laskuri in range(3):
tekstilaatikko(laskuri) = Entry(ikkuna, bd =5,width = 10, bg="SpringGreen2")# syöttöruutu
tekstilaatikko.grid(row=1+laskuri, column=5)

Metabolix [04.11.2017 15:15:55]

#

Toivomasi tekstilaatikoiden käsittely ei mitenkään eroa siitä, että haluaisit johonkin muuttujaan vaikka viisi lukua tai viisi sanaa. Ratkaisu on lista, kuten jo sanoin. Oletko lukenut opasta listoista?

from tkinter import *
ikkuna = Tk()

tekstilaatikot = []
for laskuri in range(3):
	uusi = Entry(ikkuna)
	uusi.grid(row = laskuri)
	tekstilaatikot.append(uusi)

tekstilaatikot[0].insert(0, "foo")
tekstilaatikot[1].insert(0, "bar")
tekstilaatikot[2].insert(0, "baz")

ikkuna.mainloop()

Kanarianlintu [04.11.2017 15:44:16]

#

Nyt taisin ymmärtää, voi kiitos, olet tosi fiksu:-)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta