GUI計算機の難題
pythonを使用してGUI計算機を作成しました.( 2 + 2 = 4 )
Tkinter
Tcl/TkをPythonのPython Wrapperとして使用する軽量級GUIモジュール.
- Tcl : Tool Command Language
-Tk:プラットフォームにまたがるGUIツールキット
Tkinterのメインサイクル()
-複数のモジュールでコンポーネントを作成し、トリガを設定し、実行フローの最後にユーザー入力を待つ
(待ち続けない場合は1回のみ実行して閉じます)
(UIの継続的なメンテナンスが必要)
(コードの最後のセグメントではなく、プログラムフローの最後のセグメントにある必要があります)
計算機作成コード
import tkinter as tk # python 표준인터페이스 tkinter
disValue = 0
operator = {'+':1, '-':2, '/':3, '*':4, 'C':5, '=':6}
stoValue = 0
opPre = 0 # 현재값, 연산자, 저장된 값, 이전 연산자
def number_click(value):
# print('숫자',value)
global disValue
disValue = (disValue*10) + value
str_value.set(disValue) # 화면에 숫자 나타냄
def clear():
global disValue, stoValue, opPre
disValue = 0 # 주요 변수 초기화
stoValue = 0
opPre = 0
str_value.set(str(disValue)) # 화면 지움.
def operator_click(value):
# print('명령', value)
global disValue, operator, stoValue, opPre
op = operator[value] # value의 값에 따라 연산자를 숫자로 변경(+ -> 1)
if op == 5: # C
clear()
elif disValue == 0:
opPre = 0
elif opPre == 0: # 연산자가 한번도 클릭되지 않았을 때
opPre = op # 현재 눌린 연산자가 있으면 저장
stoValue = disValue # 현재까지의 숫자 저장
disValue = 0 # 연산자 이후 숫자를 받기위해 초기화
str_value.set(disValue) # 0으로 다음 숫자 받을 준비
elif op == 6:
if opPre == 1:
disValue = stoValue + disValue
if opPre == 2:
disValue = stoValue - disValue
if opPre == 3:
disValue = stoValue / disValue
if opPre == 4:
disValue = stoValue * disValue
str_value.set(str(disValue)) # 최종 결과값 출력
disValue = 0
stoValue = 0
opPre = 0
else:
clear()
def button_click(value):
# print(value)
try:
value = int(value) # 정수로 변환
number_click(value) # 정수인 경우 number_click( )를 호출
except:
operator_click(value) # 정수가 아닌 경우 operator_click() 호출
win = tk.Tk()
win.title('계산기')
str_value = tk.StringVar()
str_value.set(str(disValue))
dis = tk.Entry(win, textvariable=str_value, justify = 'right', bg = 'pink', fg = 'red')
dis.grid(column = 0, row = 0, columnspan = 4, ipadx = 140, ipady = 30)
callItem = [['1','2','3','4'],
['5','6','7','8'],
['9', '0', '+', '-'],
['/', '*', 'C', '=']]
for i, items in enumerate(callItem):
for k, item in enumerate(items):
try:
color = int(item)
color = 'black'
except:
color = 'green'
bt = tk.Button(win,
text=item,
width = 10,
height = 5,
bg = 'black',
fg=color,
command = lambda cmd=item: button_click(cmd)
)
bt.grid(column=k, row = i + 1)
# btn = tk.Button(win, text='1', width = 10, height = 5)
# btn.grid(column = 0, row = 1)
# 하나씩 표현하는 방뻡
win.mainloop()
ソース:https://www.codingnow.co.kr/python/Reference
この問題について(GUI計算機の難題), 我々は、より多くの情報をここで見つけました https://velog.io/@ilov-/GUIcalテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol