Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: py/tk

stt-73 [11.12.2011 19:35:51]

#

Graafisessa käyttöliittymässä tarkoitus saada labelit.

Etunimi
Sukunimi
Lähiosoite
Postinro
Postitmp.

Tällä tavalla vasempaan reunaan tasattuna, sain ainoastaan laittamalla välilyöntejä eteen.
Onko tämä oikea tapa vai miten asia tulisi tehdä.

teksti2 = Label(kehys7, text = "Etunimi", width = 13)
teksti2.pack(side = LEFT)
teksti3 = Label(kehys6, text = "    Sukunimi", width = 13)
teksti3.pack(side = LEFT)
teksti4 = Label(kehys5, text = "        Lähiosoite", width = 13)
teksti4.pack(side = LEFT)
teksti5 = Label(kehys4, text = "       Postinro", width = 13)
teksti5.pack(side = LEFT)
teksti6 = Label(kehys2, text = "           Postitmp.", width = 13)
teksti6.pack(side = LEFT)

jimi-kimi [11.12.2011 19:48:50]

#

http://effbot.org/tkinterbook/grid.htm

stt-73 [11.12.2011 20:09:55]

#

Kiitos, tuolla onkin aika hyvät ohjeet.

kurssiopiskelija [08.01.2012 13:54:08]

#

Ohessa perusratkaisu Python 3.2:lla . Toiminnallisuutta noissa Entry -kentissä ei ole, mutta sitä, ei pyydetty ja esim. tiedostoihin tallennus ja/tai niiden avaus vaatisi muutaman nappulan tai Menupohjaista -ratkaisua ja esim. grid -asettelua.

# Python 3.2 tkinter- ohjelma komponenttien sijoittelusta
# absoluuttisiin koordinaatteihin

from tkinter import *

class Sovellus(object):
    def __init__(self,parent):
        f = Frame(parent)
        f.pack(fill=BOTH, expand=1)

        # luodaan otsikko-oliot ja sijoitetaan ne paikoilleen
        Label(f,text='Etunimi').place(x=20,y=20)
        Label(f,text='Sukunimi').place(x=20,y=60)
        Label(f,text='Lähiosoite').place(x=20,y=100)
        Label(f,text='Postinumero').place(x=20,y=140)
        Label(f,text='Postitmp').place(x=20,y=180)

        # luodaan kentät ja sijoitetaan
        self.kentta1 = Entry(f); self.kentta1.place(x=100,y=20)
        self.kentta2 = Entry(f); self.kentta2.place(x=100,y=60)
        self.kentta3 = Entry(f); self.kentta3.place(x=100,y=100)
        self.kentta4 = Entry(f); self.kentta4.place(x=100,y=140)
        self.kentta5 = Entry(f); self.kentta5.place(x=100,y=180)


root = Tk()   # luo pääikkunan (root)
root.geometry("400x400+300+300")
root.title('Osoitetiedot')
sov = Sovellus(root)
root.mainloop()  # käynnistää "ikuisen" tapahtumakuuntelu -loopin

Vastaus

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

Tietoa sivustosta