質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1941閲覧

Python 電卓機能の拡張

dddddod

総合スコア4

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/27 02:35

編集2020/08/27 05:05

jupyterのpythonで関数電卓を作成をしようとしているのですが以下のプログラムに累乗、階乗、三角関数、log、√、etc...を追加して表示される電卓にボタンを追加したいのですがどのようにしたらよいでしょうか?

python コード import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master.geometry() self.master.title('計算機') self.entry = tk.Entry(self.master, justify="right") self.menu_bar = tk.Menu(self.master) self.master.config(menu=self.menu_bar) self.create_widgets() def input(self, action): self.entry.insert(tk.END, action) def clear_all(self): self.entry.delete(0, tk.END) def clear_one(self): txt = self.entry.get() self.entry.delete(0, tk.END) self.entry.insert(0, txt[:-1]) def equals(self): self.value = eval(self.entry.get().replace('÷', '/').replace('x', '*').replace('%', '/100')) self.entry.delete(0, tk.END) self.entry.insert(0, self.value) def create_widgets(self): file_menu = tk.Menu(self.menu_bar) file_menu.add_command(label='閉じる', command=self.master.quit) self.menu_bar.add_cascade(label='メニュー', menu=file_menu) self.entry.grid(row=0, column=0, columnspan=4, pady=3) self.entry.focus_set() tk.Button(self.master, text='7', width=4, command=lambda: self.input(7)).grid(row=2, column=0) tk.Button(self.master, text='8', width=4, command=lambda: self.input(8)).grid(row=2, column=1) tk.Button(self.master, text='9', width=4, command=lambda: self.input(9)).grid(row=2, column=2) tk.Button(self.master, text='4', width=4, command=lambda: self.input(4)).grid(row=3, column=0) tk.Button(self.master, text='5', width=4, command=lambda: self.input(5)).grid(row=3, column=1) tk.Button(self.master, text='6', width=4, command=lambda: self.input(6)).grid(row=3, column=2) tk.Button(self.master, text='1', width=4, command=lambda: self.input(1)).grid(row=4, column=0) tk.Button(self.master, text='2', width=4, command=lambda: self.input(2)).grid(row=4, column=1) tk.Button(self.master, text='3', width=4, command=lambda: self.input(3)).grid(row=4, column=2) tk.Button(self.master, text='0', width=9, command=lambda: self.input(0)).grid(row=5, column=0, columnspan=2) tk.Button(self.master, text='.', width=4, command=lambda: self.input('.')).grid(row=5, column=2) tk.Button(self.master, text='=', width=4, command=self.equals).grid(row=5, column=3) tk.Button(self.master, text='x', width=4, command=lambda: self.input('x')).grid(row=2, column=3) tk.Button(self.master, text='-', width=4, command=lambda: self.input('-')).grid(row=3, column=3) tk.Button(self.master, text='+', width=4, command=lambda: self.input('+')).grid(row=4, column=3) tk.Button(self.master, text='AC', width=4, command=lambda: self.clear_all()).grid(row=1, column=0) tk.Button(self.master, text='C', width=4, command=lambda: self.clear_one()).grid(row=1, column=1) tk.Button(self.master, text='%', width=4, command=lambda: self.input('%')).grid(row=1, column=2) tk.Button(self.master, text='÷', width=4, command=lambda: self.input('÷')).grid(row=1, column=3) root = tk.Tk() app = Application(master=root) app.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/27 03:24

コードは「コードの挿入」で記入してください。
dddddod

2020/08/27 04:05

変更致しました。
guest

回答1

0

ベストアンサー

ソースコードを見る限り下記のように追加していけばいいと思います。
※サンプルは累乗をイメージしています。

def equals(self): self.value = eval(self.entry.get().replace('÷', '/').replace('x', '*').replace('%', '/100').replace('^', '**'))

def equals(self)の最後に追記していく形。
ボタンとして指定する記号とその計算式をreplace()という形で記載。

tk.Button(self.master, text='^', width=4, command=lambda: self.input('^')).grid(row=行, column=列)

あとは表示したい行列を指定すればできるかと思われます。

私も初心者なので出来るかわかりませんがご参考までに。
他の回答者様のコメントを待つのが良いかもしれません。

投稿2020/08/27 04:12

編集2020/08/27 04:24
setuna0531

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dddddod

2020/08/27 22:19

ありがとうございます。 演算子は上記のようにプログラムできますが平方根や対数はどのように書けばいいでしょうか?
setuna0531

2020/08/28 01:25 編集

平方根に関しては計算式の中を「**0.5」とすれば求められると思います。 調べ方としては「平方根 計算式 python」などで検索をかけると色々出てくるので参考にしてください。
dddddod

2020/08/28 01:57

ご丁寧にありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問