pythonのTkinterライブラリを使用して簡単な計算機を開発する
記事ディレクトリ
序文
どの主流言語でも簡単な計算機を開発できます。この記事の開発にはpythonを使用します。添付のソースコード
ヒント:以下はこの記事の内容です。以下のケースは参照用です
1.実験の準備
1.開発ソフトウェアの選択-jupyterノートブックに
pythonを書き込むことができるソフトウェアがたくさんあります。私はこの実験を使用します。jupyterノートブックを使用する場合は、最初にanacondaをインストールする必要があります。インストールチュートリアルは次のとおりです。Anacondaインストールチュートリアル(グラフィックス)ですが、注意してください。 AnacondaにインストールされているTsinghuaソースは利用できません。Tsinghuaミラーを使用する必要があります。Baiduで確認できます。ここにリンクはありません。
2.グラフィカルインターフェイスの実現-Tkinter
pythonを使用してグラフィカルインターフェイスを実装する場合、使用する必要のあるパッケージはTkinterです。Tkinterは、pythonを使用したウィンドウ設計用のモジュールです。Tkinterモジュール(「Tkインターフェイス」)は、Pythonの標準TkGUIツールキットへのインターフェイスです。pythonの特定のGUIインターフェイスとして、それはイメージウィンドウです。Tkinterは、pythonに付属し、編集可能なGUIインターフェイスです。GUIを使用して多くの直感的な機能を実現できます。たとえば、計算機を開発する場合、それが単なるプログラムの入力と出力である場合などです。ウィンドウの場合、ユーザーエクスペリエンスは役に立ちません。グラフィカルな小さなウィンドウのすべての開発が必要です。言語は読みやすく、使いやすいので、これが私が計算機としてpythonを選択する理由です。Tkinterについて詳しく知りたい場合は、次のリンクを使用して、大物の詳細な説明を参照できます。PythonGUItkinterウィンドウチュートリアルコレクション
2.開発手順
1.ライブラリをインポートします
このとき、pythonのTkinterパッケージとmathパッケージを呼び出す必要があります。python3の後のTkinterの呼び出しは大文字になっていることに注意してください。!!それ以外の場合、コンパイルはエラーを報告します。
コードは次のように表示されます。
import math
import tkinter as tk
2.インターフェース設計
プログラムの設計は、主に2つの部分に分かれています。1つはインターフェイスの設計で、もう1つは計算です。まず、インターフェースの設計を見てみましょう。まず、フレームワークを構築します。ループを使用してボタンを入力できます。その前に、次のように計算機の初期化コードに注意する必要があり
ます(例)。
class Calc(tk.Tk):
"""计算器窗体类"""
def __init__(self):
"""初始化实例"""
tk.Tk.__init__(self)
self.title("我的计算器")
self.memory = 0 # 暂存数值
self.Demo()
def Demo(self):
"""创建界面"""
btn_list = ["C", "(", ")", "/",
"7", "8", "9", "*",
"4", "5", "6", "-",
"1", "2", "3", "+",
"+/-", "0", ".", "="]
r = 1
c = 0
for b in btn_list:
self.button = tk.Button(self, text=b, width=5,
command=(lambda x=b: self.operate(x)))
self.button.grid(row=r, column=c, padx=3, pady=6)
c += 1
if c > 3:
c = 0
r += 1
self.entry = tk.Entry(self, width=24, borderwidth=2,
bg="black", font=("黑体", 11))
self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)
次のステップは、アルゴリズム部分を実装することです。これまで、C ++では、2-(3-2)のような多項式を実現するために、多項式が計算機に一度に入力されるときに、この種の括弧の優先順位の問題を考慮する必要があります。優先度を決定するには、数字と記号を別々にスタックにプッシュする必要があります。pythonを使用する場合、Tkinterテキストボックス(エントリ)を使用してエントリの使用法を実現できます。多くの用途があります。詳細については、ここではなく、PythonXML解析を参照してください。
コードは次のように1つずつ説明されています。
def operate(self, key):
"""press the button"""
if key == "=": # 输出结果
result = eval(self.entry.get())#获取文本框输入的值(值为=)
self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果
elif key == "C": # 清空输入框
self.entry.delete(0, tk.END)#将结果清零
elif key == "+/-": # 取相反数
if "=" in self.entry.get():
self.entry.delete(0, tk.END)
elif self.entry.get()[0] == "-":
self.entry.delete(0)
else:
self.entry.insert(0, "-")
else: # 其他键
if "=" in self.entry.get():
self.entry.delete(0, tk.END)
self.entry.insert(tk.END, key)
if __name__ == "__main__":
Calculator().mainloop()
3.鍵-Tkinterライブラリの呼び出しを実現するため
Pythonは、グラフィカルな開発インターフェイス用に複数のライブラリを提供します。一般的に使用されるライブラリはTkinterを使用します。Tkinterを使用すると、コードの行数を大幅に減らすことができます。アイデアは明確でシンプル、シンプルで読みやすいですが、主にTkinter関数を使用して作成中です。 、これにより、プログラムのアルゴリズムもそれほど目立たなくなります。
総括する
この記事では、Tkinterを使用して簡単な計算機を開発する方法を簡単に紹介します。次のソースコードを使用して実行し、試して、デモアニメーションを添付できます。さらに、この記事に記載されているTkinterライブラリに興味がある場合は、上記のリンクを参照してください。非常に詳細です。ソースコード
import tkinter as tk
class Calculator(tk.Tk):
"""计算器窗体类"""
def __init__(self):
"""初始化实例"""
tk.Tk.__init__(self)
self.title("我的计算器")
self.memory = 0 # 暂存数值
self.Demo()
def Demo(self):
"""Create the Demo"""
btn_list = ["C", "(", ")", "/",
"7", "8", "9", "*",
"4", "5", "6", "-",
"1", "2", "3", "+",
"+/-", "0", ".", "="]
r = 1
c = 0
for b in btn_list:
self.button = tk.Button(self, text=b, width=5,
command=(lambda x=b: self.operate(x)))
self.button.grid(row=r, column=c, padx=3, pady=6)
c += 1
if c > 3:
c = 0
r += 1
self.entry = tk.Entry(self, width=21, borderwidth=3,
bg="light blue", font=("黑体", 11))
self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)
def operate(self, key):
"""press the button"""
if key == "=": # 输出结果
result = eval(self.entry.get())#获取文本框输入的值(值为=)
self.entry.insert(tk.END, " = " + str(result))#在’=‘后输出计算结果
elif key == "C": # 清空输入框
self.entry.delete(0, tk.END)#将结果清零
elif key == "+/-": # 取相反数
if "=" in self.entry.get():
self.entry.delete(0, tk.END)
elif self.entry.get()[0] == "-":
self.entry.delete(0)
else:
self.entry.insert(0, "-")
else: # 其他键
if "=" in self.entry.get():
self.entry.delete(0, tk.END)
self.entry.insert(tk.END, key)
if __name__ == "__main__":
Calculator().mainloop()