yamacb’s blog

病気がちな体質ですが、色々な事をブログに載せていきたく思います。

自作電卓アプリ

f:id:yamacb:20210103085602p:image

pythonプログラムがiPhoneで可能なpythonistaって言うアプリを使って、自作の電卓を作ってみました。

調べたり勉強したり1ヶ月位なかなか上手く動かなくて苦労しました。

f:id:yamacb:20210103085636p:image

pythonプログラムは病気になってから暫くやってないけれど、良くなったら再開したいです。

f:id:yamacb:20210103085658p:image


以下にプログラム載せます。

他にもボタンの設定もしないと動きませんが、色々考えて工夫しました。

 

import ui

 


v = ui.load_view()

v.present('sheet')

 


import ui

import clipboard

import console

 


calcd = False

 


#数字キーのイベント処理

 


def on_number_tap(sender):

    global calcd

    s = display_label.text

    if calcd:

       s = ""

       calcd = False

    if s == '0':

       s = ""

    display_label.text = s + sender.title

    

calcd = False

#演算キーのイベント処理

    

def on_operation_tap(sender):

    global calcd

    display_label.text += sender.title

    calcd = False

    

#delキーのイベント処理

    

def on_delete_tap(sender):

    display_label.text = display_label.text[:-1]

    

    

#CLキーのイベント処理

    

def on_clear_tap(sender):

    display_label.text = '0'

    

    

#Calcキーのイベント処理

    

def on_calc_tap(sender):

    global calcd

    calcd = True

    try:

        fml = display_label.text

        res = str('{:.2f}'.format(eval(fml)))

        display_label.text = res

        history_list.data_source.items.append(fml + '=' + res)

    except:

        display_label.text = '***ERROR***'

        

        

#リストのイベント処理

        

@ui.in_background

def on_list_tap(sender):

    n = sender.selected_row

    s = sender.items[n]

    clipboard.set(s)

    console.alert(s + 'をコピーしました。')

    

#メイン処理

    

v = ui.load_view()

display_label = v['display_label']

history_list = v['history_list']

v.present('sheet', orientations = ['portrait'])