Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python, Tk: Painikkeen ja tekstin asettelu

Kanarianlintu [15.09.2017 12:04:45]

#

Minulla on yksi todellinen ihmetyksenaihe, tässä:

Button(h_ikkuna, text="Tallenna muutos", command=talleta_asento).grid(row=1, column=1, sticky=W, pady=4)

Label(h_ikkuna, text=h_lista[nro]).grid(row=1, column=2)

Tämä on siis ohjelmanpätkä missä painikkeen viereen oikealle puolelle pitäisi tulla merkki listalta. Tämä lista taas tulee suoraan tekstitiedostosta.

Ongelma on siinä, että tuo painike ja merkki eivät tule täysin samalle korkeudelle, vaan merkki tulee hieman korkeammalle kuin painike. En ole keksinyt mitään keinoa millä nuo kaksi asiaa saisi vierekkäin.

Kiitos vastauksista.

Kanarianlintu [15.09.2017 17:27:06]

#

Kokeilin vielä lisätä taustavärin tälle:

Label(h_ikkuna, text=h_lista[nro],bg="tomato").grid(row=1, column=2)

Huomasin, että tuo taustaväri ei tule vain merkin päälle, vaan jatkuu melkein merkin koon verran sen alapuolelle.

Tämän varmaan täytyy liittyä siihen, että tuo lista on peräisin tekstitiedostosta?

Kanarianlintu [16.09.2017 10:53:05]

#

Onko kenelläkään mitään tietoa mistä on kyse ja onko ilmiölle mitään tehtävissä.
Kiitos

Metabolix [16.09.2017 11:09:41]

#

Katso, mitä muuttuja sisältää, esim. print(repr(muuttuja)). Jos lopussa on ylimääräinen rivinvaihtomerkki, poista se strip-funktiolla.

Kanarianlintu [16.09.2017 14:46:00]

#

Hei ja kiitos avustasi, toivottavasti nyt tämä näkyy oikein.
Katsoin tekstitiedostoa tarkemmin ja tiedoksi se, että siinä ei ole yhtään merkitöntä riviä. En oikein tiennyt mitä etsiä, mutta tällä ohjelmapätkällä lataan listan juuri ennen sen käyttöä ohjelmassa, pitäisikö rivinvaihto näkyä tässä:

tiedosto = open(hdata.strip()+".txt", "r")
    hlista=tiedosto.readlines()
    tiedosto.close()

Kiitos avusta.

Metabolix [16.09.2017 15:09:37]

#

Rivinvaihtomerkki on tekstitiedostossa jokaisen rivin lopussa. (Eihän teksti ole kovalevyllä mitenkään riveinä, vaan tietokone tunnistaa ”rivit” tietystä erikoismerkistä.)

Voit nähdä rivinvaihtomerkit edellä ehdottamallani koodilla:

print(repr(hlista[0]))
# tulostaa esim. 'moi\n' tai 'moi\r\n', missä '\n' tai '\r\n' on rivinvaihto

Voit poistaa rivinvaihtomerkin vaikka rstrip-funktiolla:

uusiteksti = hlista[0].rstrip('\r\n')

Esittelin aiemman kysymyksen yhteydessä koodin, jossa rivinvaihtomerkit poistetaan jo tiedoston avaamisen yhteydessä; sitäkin voit hyödyntää.

Kanarianlintu [16.09.2017 17:13:20]

#

Hieno homma, sain tuon toimimaan ohjeellasi ".rstrip('\r\n')"

Isot kiitokset:-)

Vastaus

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

Tietoa sivustosta