Naloge

Pretvarjanje iz Fahrenheitov v Celzije

Naloga je očitna, formula pa je C = 5/9 * (F-32).

ilustracija

Rešitev

Datoteka f2c.ui.

from PyQt5 import QtWidgets, uic

def convert(fahrenheit):
    if fahrenheit:
        dlg.lbC.setText('{:.2f}'.format(5 / 9 * (float(fahrenheit) - 32)))
    else:
        dlg.lbC.clear()

app = QtWidgets.QApplication([])
dlg = uic.loadUi("f2c.ui")
dlg.leF.textChanged.connect(convert)
dlg.show()
app.exec()

Pretvarjanje v desetiški sistem

Napiši program za pretvarjanje iz dvojiškega v desetiški sistem. Pretvarjati naj zna tudi decimalna števila. Pomagajte si s funkcijo int().

ilustracija

Rešitev

Datoteka bin2dec.ui.

from PyQt5 import QtWidgets, uic

def convert(bin):
    if bin:
        dec = int(str(bin).replace(".", ""), 2)
        if '.' in bin:
            dec /= 2**(len(bin.split('.')[1]))
        dlg.leDec.setText(str(dec))
    else:
        dlg.leDec.clear()

app = QtWidgets.QApplication([])
dlg = uic.loadUi("bin2dec.ui")
dlg.leBin.textChanged.connect(convert)
dlg.show()
app.exec()

Kalkulator

Napišite program, ki računa poljubne aritmetične izraze in izgleda tako, kot prikazuje slika:

ilustracija

Pri tej nalogi vam izjemoma dovolimo uporabiti funkcijo eval.

Rešitev

Datoteka calc.ui.

from PyQt5 import QtWidgets, uic
from math import *

def run():
    input = dlg.leInput.text()
    dlg.tbOutput.append("{} = <b>{}</b>".format(input, eval(input)))

app = QtWidgets.QApplication([])
dlg = uic.loadUi("calc.ui")
dlg.leInput.returnPressed.connect(run)
dlg.show()
app.exec()

Vreme

Napišite program, ki bo prikazal opise trenutnih vremenskih razmer v krajih po Sloveniji.

Podatki so dostopni na Meteo portalu Agencije Republike Slovenije za okolje. Pomagajte si s sledečo kodo:

from urllib.request import urlopen, Request
url = 'https://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_si_text.html'
req = Request(url)
html = urlopen(req).read().decode('utf-8')

ilustracija

Zgornja kontrola je List Widget, spodnja pa Text Browser.

Rešitev

Datoteka vreme.ui.

from PyQt5 import QtWidgets, uic

from urllib.request import urlopen, Request
url = 'https://meteo.arso.gov.si/uploads/probase/www/observ/surface/text/sl/observation_si_text.html'
req = Request(url)
html = urlopen(req).read().decode('utf-8')

lines = html.splitlines()[6:-4]

app = QtWidgets.QApplication([])
dlg = uic.loadUi('vreme.ui')
dlg.lbDateTime.setText("\n".join(lines[:4]))

vreme = {}
i = 6
while i < len(lines):
    if lines[i] and lines[i].split()[0].isupper():
        kraj, ostalo = lines[i].split(":")
        vreme[kraj] = [ostalo.strip()]
        i += 1
        while lines[i]:
            vreme[kraj].append(lines[i].strip())
            i += 1
    i += 1

def update():
    kraj = dlg.lwKraji.currentItem().text()
    dlg.tbVreme.setText("\n".join(vreme[kraj]))

dlg.lwKraji.addItems(vreme.keys())
dlg.lwKraji.itemSelectionChanged.connect(update)

dlg.show()
app.exec()

Last modified: Friday, 15 January 2021, 1:13 PM