Esempio n. 1
0
def valitse_tyyppi():
    """
    Tarkastaa syötteestä, mitä tyyppiä komponentti on
    """
    tyyppi = ik.lue_kentan_sisalto(tila["syote"])
    ik.tyhjaa_kentan_sisalto(tila["syote"])
    if tyyppi.isdigit():
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
    elif len(tyyppi) > 1:
        if tyyppi == 'aasisvengaa':
            ik.avaa_viesti_ikkuna("Vanha vitsi!", "Aasi ei svengaa.", True)
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
    elif tyyppi == 'r' or 'l' or 'c':
        tallenna_tyyppi(tyyppi)
    else:
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
def aseta_jannite():
	""" Pyytää käyttäjältä tarvittavat tiedot piirin virran laskemiseksi.
		Kyselyä toistetaan kunnes tarvittavat tiedot on annettu. Jännite annettama ilman merkintää V,
		mutta voidaan antaa kerrannaisyksikön kanssa, kuten 1p"""
	tila["jannite"] = ik.lue_kentan_sisalto(jannite_kentta)
	jannite = tila["jannite"][0:-1]
	yksikko = tila["jannite"][-1]
	while True:
		try:
			if tila["jannite"] == "0":
				raise(ValueError)
			else:
				pass
			jannite == int(jannite)
		except ValueError:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista jännitettä!", virhe=False)
			return aseta_jannite
	for yksikko in SI_kerrannaisyksikot:
		U = jannite * SI_kerrannaisyksikot.get("yksikko")  #U = jannite
		if False:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista jännitettä!\nVinkki: Anna jännite ilman yksikköä, esim. muodossa 12.0k", virhe=False)
		else:
			pass
	arvot["U"] = U
	pi.piirra_jannitelahde(piirin_piirto_tila, arvot["U"], arvot["f"], v_asetteluvali=2)
	ik.tyhjaa_kentan_sisalto(jannite_kentta)
Esempio n. 3
0
def lisaaKomponentti():
    """
    Lisää komponentin haaraan.
    """
    komp = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[0]]).strip().lower()
    arvo = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[1]]).strip()
    id = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[2]]).strip()
    sallitut = ("v", "r", "k", "l", "c")

    if not komp in sallitut:
        ikn.avaa_viesti_ikkuna("Virhe!", "Komponentti ei ollut kelvollinen.",
                               True)
        ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[0]])
        return

    if komp == "v":
        komp = "r"
    elif komp == "k":
        komp = "l"

    arvo = sim.muunnaSi(arvo)
    if not arvo:
        ikn.avaa_viesti_ikkuna("Virhe!", "Arvo ei ollut kelvollinen.", True)
        ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[1]])
        return

    komp = (komp, arvo)
    id = tarkistaID(id)

    KLIITTYMÄ["komponentit"][id].append(komp)
    komponenttilistaus()
    piirtaja()
Esempio n. 4
0
def nimi():
    '''Tallentaa sen nimen'''
    stats['nimi'] = iku.lue_kentan_sisalto(elementit['vika'])
    iku.tyhjaa_kentan_sisalto(elementit['vika'])
    iku.piilota_ali_ikkuna(elementit['vikaik'])
    ali = iku.luo_ali_ikkuna('')
    liput['save'] = True
    iku.luo_tekstirivi(ali, 'Tulokset tallennettu!')
Esempio n. 5
0
def aseta_taajuus():
    """
    Lukee liukulukuarvon syötekentästä ja asettaa sen piirin jännitelähteen taajuudeksi.
    """
    try:
        tila["taajuus"] = ik.lue_kentan_sisalto(tila["syote"])
        if tila["taajuus"][-1].isdigit():
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Taajuus: {} Hz".format(float(tila["taajuus"])))
        else:
            tila["taajuus"] = muuta_kerrannaisyksikko(tila["taajuus"])
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Taajuus: {} Hz".format(float(tila["taajuus"])))
    except TypeError:
        ik.avaa_viesti_ikkuna("VIRHE", "Syöte ei ollut kelvollinen", True)
    ik.tyhjaa_kentan_sisalto(tila["syote"])
Esempio n. 6
0
def asetaTaajuus():
    """
    Lukee syötekenttää ja koettaa asettaa taajuuden.
    """
    taajuusTulokas = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[1]]).strip()
    # Muunnos SI yksikköön. Tarkistaa myös syötteen kelvollisuuden. Jos ei kelvollinen,
    # palauttaa "None" arvon.
    taajuusTulokas = sim.muunnaSi(taajuusTulokas)

    if taajuusTulokas:
        KLIITTYMÄ["taajuus"] = taajuusTulokas
        tulostus = sim.Si_ksi(taajuusTulokas)
        ikn.kirjoita_tekstilaatikkoon(
            KLIITTYMÄ["logi"],
            "Taajuus: {}{} Hz".format(tulostus[0], tulostus[1]))
    else:
        ikn.avaa_viesti_ikkuna("Virhe!", "Syöte ei ollut kelvollinen.", True)

    ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[1]])
Esempio n. 7
0
def laske_arvo():
    """
    Laskee impedanssin eri komponenttityypeille, tallentaa ne sanakirjan komponentit-listaan
    ja kutsuu piirtämisfunktiota
    """
    try:
        arvo = float(ik.lue_kentan_sisalto(tila["syote"]))
        tyyppi = tila["tyyppi"]
        ik.tyhjaa_kentan_sisalto(tila["syote"])
        if tyyppi == 'r':
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Vastuksen impedanssi on {ohmi:.2f} ohmia.".format(ohmi=arvo))
            tila["komponentit"].append((tyyppi, arvo))
            tila["impedanssit"].append(arvo)
            piirra_piiri()
        elif tila["tyyppi"] == 'l':
            impedanssi = 2 * PI * tila["taajuus"] * arvo
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Kelan induktanssi taajuudella {hertsi:.2f} Hz on {ohmi:.3f} ohmia."
                .format(hertsi=tila["taajuus"], ohmi=impedanssi))
            tila["komponentit"].append((tyyppi, impedanssi))
            tila["reaktanssit"].append(impedanssi)
            piirra_piiri()
        elif tila["tyyppi"] == 'c':
            impedanssi = 1 / (2 * PI * float(tila["taajuus"]) * arvo)
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Kondensaattorin kapasitanssi taajuudella {hertsi:.2f} Hz on {ohmi:.3f} ohmia."
                .format(hertsi=tila["taajuus"], ohmi=impedanssi))
            tila["komponentit"].append((tyyppi, impedanssi))
            tila["reaktanssit"].append(impedanssi)
            piirra_piiri()
    except ValueError:
        ik.avaa_viesti_ikkuna("VIRHE", "Syötä liukuluku!", True)
Esempio n. 8
0
def arvo_kasittelija():
    '''Funktio hakee ja tarkistaa pelaajan antaman arvon. Kentta on
    tekstikenttä johon käyttäjä kirjoittaa, teksti alue johon kirjoitetaan
    tekstiä.'''
    try:
        peli["korkeus"] = int(iku.lue_kentan_sisalto(elementit["korkeus"]))
        peli["leveys"] = int(iku.lue_kentan_sisalto(elementit["leveys"]))
        peli["miinat"] = int(iku.lue_kentan_sisalto(elementit["miinat"]))
        if peli["korkeus"] <= 0 or peli["leveys"] <= 0 or peli["miinat"] <= 0:
            iku.avaa_viesti_ikkuna("Virhe",
                                   "Arvojen täytyy olla suurempia kuin nolla",
                                   True)
        else:
            iku.tyhjaa_kentan_sisalto(elementit["leveys"])
            iku.tyhjaa_kentan_sisalto(elementit["korkeus"])
            iku.tyhjaa_kentan_sisalto(elementit["miinat"])
            liput["peli"] = True
            iku.lopeta()
    except ValueError:
        iku.avaa_viesti_ikkuna("Virhe", "Arvojen täytyy olla kokonaislukuja",
                               True)