Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Python: Tkinter: päiväsakkolaskuri

koodaaja [15.10.2021 22:53:39]

#

Tämä on esimerkki pelkistetystä päiväsakkolaskurista, jossa ei oteta huomioon lasten lukumääriä. Ohjelma laskee päiväsakon kokonaissumman tai nettotulojen määrän syötteiden avulla. Ohjelma laskee kolme eri tulosta.

Päiväsakko lasketaan vähentämällä nettotuloista ensin 255 euroa tämän ja tämän jälkeen jaetaan 60:lla. Yhden päiväsakon vähimmäissumma on kuusi euroa.

from tkinter import *


def sel():
 #Muutetaan selitettä.
 if (valinta.get() == 1):
  selite.config(text="Tulot")
 elif (valinta.get() == 2):
  selite.config(text="Sakon summa")


def Laske(sMaara,sMaara2,sMaara3,laskettava,valinta):

 tu = 0.0
 tu2 = 0.0
 tu3 = 0.0

 perus = 0.0
 if (valinta == 1):
  #Lasketaan sakon kokonaissumma
  #Laskettaan ensin yhden päiväsakon määrä.
  perus = (laskettava-255)/60.0
  if (perus < 6):
   #Päiväsakon vähimmäismäärä on kuusi euroa.
   perus = 6
  tu = perus*sMaara
  tu2 = perus*sMaara2
  tu3 = perus*sMaara3

 elif (valinta == 2):
  #Lasketaan tulot.
  tu = (60*laskettava)/sMaara+255
  tu2 = (60*laskettava)/sMaara2+255
  tu3 = (60*laskettava)/sMaara3+255

 return tu,tu2,tu3

def Tulos():

 #Otetaan sakkojen määrä
 sMaara = int(sakkojenMaara.get())
 sMaara2 = int(sakkojenMaara2.get())
 sMaara3 = int(sakkojenMaara3.get())

 #Lasketaan joko tulojen tai sakon summan kautta.
 laskettava = var.get()

 tu,tu2,tu3 = 0.0,0.0,0.0
 tu,tu2,tu3 = Laske(sMaara,sMaara2,sMaara3,laskettava,valinta.get())
 tulos.config(text=str(int(tu)))
 tulos2.config(text=str(int(tu2)))
 tulos3.config(text=str(int(tu3)))

root = Tk()

#Ohjelmassa on kolme kehystä.
#Ensimmäiseen kehykseen laitetaan säädin ja tekstikentät.
syotteet = Frame(root)
syotteet.pack()


selite = Label(syotteet)
selite.pack()
selite.config(text="Ei mitään")

var = DoubleVar()
syote = Scale(syotteet,from_=0,to=3000,variable=var)
syote.pack()

#Luodaan tekstikentät ja niiden selitteet.

teksti = Label(syotteet)
teksti.pack()
teksti.config(text="Määrä 1:")

sakkojenMaara = Entry(syotteet,bd=5)
sakkojenMaara.pack()

teksti2 = Label(syotteet)
teksti2.pack()

teksti2.config(text="Määrä 2:")

sakkojenMaara2 = Entry(syotteet,bd=5)
sakkojenMaara2.pack()

teksti3 = Label(syotteet)
teksti3.pack()
teksti3.config(text="Määrä 3:")

sakkojenMaara3 = Entry(syotteet,bd=5)
sakkojenMaara3.pack()


#Toiseen kehykseen laitetaan valinnat ja näppäin.
valinnat = Frame(root)
valinnat.pack()

valinta = IntVar()

tulot = Radiobutton(valinnat,text="Tulot",variable=valinta,value=1,command=sel)
tulot.pack()

sakkoSumma = Radiobutton(valinnat,text="Sakonsumma",variable=valinta,value=2,command=sel)
sakkoSumma.pack()

nappain = Button(valinnat,text="Laske",command=Tulos)
nappain.pack()


#Kolmanteen kehykseen laitetaan tulokset.

tulokset = Frame(root)
tulokset.pack()

tulos = Label(tulokset)
tulos.pack()
tulos.config(text="0")

tulos2 = Label(tulokset)
tulos2.pack()
tulos2.config(text="0")

tulos3 = Label(tulokset)
tulos3.pack()
tulos3.config(text="0")


root.mainloop()

Vastaus

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

Tietoa sivustosta