見出し画像

Pythonプログラム 電卓


以下にPythonista3というアプリを使った電卓のプログラムを載せます。

import ui

 
import clipboard 
import console 

#calcdという変数 。「calc」キーで計算直後にcalcdをTrueにする
#計算した直後数字キーを押したら表示をクリアして入力するため
calcd = False 

v = ui.load_view()
v.present('sheet')


#時間表示
import datetime
from datetime import datetime as dt

#tdatetime  = dt.now()
#t  = tdatetime.strftime('%Y/%m/%d %H:%M:%S')

def on_button(sender):


tdatetime = dt.now()
t = tdatetime.strftime('%Y/%m/%d %H:%M:%S')
title_label2 = sender.superview['title_label2']
title_label2.text = (t)

def on_cl(sender):
title_label2 = sender.superview['title_label2']
title_label2.text = ""

#ここから計算機
#display_label .text


#数字キーのイベント処理
#calcd  をglobal変数として用意。

#5行目  計算後に値をクリア
#7行目  現在の表示を変数Sに取り出す。
#そしてcalcd  がTrueなら、空のテキストにする
#もう一つ 、値が0ならsをクリアする
#9行目  用意したSにイベントが発生したボタンのテキストを付け足し
#表示

#replace ("×""*")

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
#演算キーのイベント処理
#display_labelテキストの末尾にsenderのtitleを付け足し
#calcd  値をFalseに変更。これでdisplayのテキストに
#演算記号が付け足される
    
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キーのイベント処理
#グローバル変数calcd  を宣言、値をTrueに
    
def on_clear_tap(sender):
    display_label.text = '0'
    
    
#Calcキーのイベント処理
#入力された式をevalする 。displayに設定された式を取り出し
#evalで評価して小数点2桁まで丸めて変数に設定する
#8行目  displayとlistの表示を変更する

    
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 + 'をコピーしました。')
    
   
    
#メイン処理
#Viewをロードする
#label  を変数dispに、TableViewを変数list にそれぞれ
#取り出しておく
    
v = ui.load_view()
display_label = v['display_label']
history_list = v['history_list']
v.present('sheet', orientations = ['portrait'])

この記事が気に入ったらサポートをしてみませんか?