본문 바로가기
First step/AI 기초반

[TIL]21.06.23 GUI기초2,계산기만들기

by Joshua21 2021. 6. 23.


#누르면 표시가 계속 바뀌는 버튼 만들기
import tkinter as tk
root = tk.Tk()

bact= False
def func():
    global bact
    if bact:
        label.config(text='apple')
        bact = False
    else:
        label.config(text='orange')
        bact = True
label=tk.Label(root,text='apple')

label.pack()

button=tk.Button(root, text='push!',command=func)
button.pack()
root.mainloop()


#버튼을 벗어나면 글자가 바뀌는 이벤트
import tkinter as tk
root = tk.Tk()
def func():
    label.config(text='pushed')

def func_event(ev):#마우스의위치가 버튼위에서 벗어나
    label.config(text='Leave')
def func_event1(ev):
    label.config(text='Enter')

         
label = tk.Label(root,text="push button")
label.pack()

button = tk.Button(root, text = "push!",command = func)
button.pack()
button.bind('<Leave>',func_event)
button.bind('<Enter>',func_event1)
root.mainloop()

#버튼 클릭한 위치에 좌표표시 이벤트
import tkinter as tk
root = tk.Tk()
def func():
    label.config(text='pushed')

def func_event_click(ev):
    disp = str(ev.x) +'/'+str(ev.y)
    label.config(text=disp)

label = tk.Label(root,text="push button")
label.pack()

button = tk.Button(root, text = "push!",command = func)
button.pack()
button.bind('<Button-1>',func_event_click)
root.mainloop()


#라디오 버튼 만들기 tk.Radiobutton (윈도우창,파라미터1,파라미터2...)
import tkinter as tk

def action1():
    lbl.config(text='option1')
def action2():
    lbl.config(text='option2')
root = tk.Tk()

lbl = tk.Label(root,text="EduCoding",underline=3)
lbl.pack()

rbvar=""
#variable 이 같으면 서로 배타적으로 작동함 indicatoron에 따라버튼의 모양이 다름
rb1=tk.Radiobutton(root, text="option1",variable=rbvar,value='a',indicatoron=0,command=action1)
rb1.pack()

rb2=tk.Radiobutton(root, text="option2",variable=rbvar,value='b',indicatoron=0,command=action2)
rb2.pack()

#라디오 버튼 만들
import tkinter as tk
root = tk.Tk()
def func1():
    lbl.config(text='Button1')
def func2():
    lbl.config(text='Button2')

sel = tk.IntVar()
sel.set(1)

lbl = tk.Label(root,text="Select Button")
lbl.pack()


rb1=tk.Radiobutton(root, text="Button1",variable=sel,value=1,command=func1)
rb1.pack()

rb2=tk.Radiobutton(root, text="Button2",variable=sel,value=2,command=func2)
rb2.pack()


import tkinter as tk
root = tk.Tk()
def func1():
    lbl.config(text='Button1')
def func2():
    lbl.config(text='Button2')
def func3():
    lbl.config(text='Button3')
def func_print():
    print(sel.get())
sel = tk.IntVar()
sel.set(1)

lbl = tk.Label(root,text="Educoing",underline=3)
lbl.pack()


rb1=tk.Radiobutton(root, text="Choice1",variable=sel,value=1,command=func1)
rb1.pack()

rb2=tk.Radiobutton(root, text="Choice2",variable=sel,value=2,command=func2)
rb2.pack()

rb3=tk.Radiobutton(root, text="Choice3",variable=sel,value=3,command=func3)
rb3.pack()

button = tk.Button(root, text = "print choice",command = func_print)
button.pack()

#lambda 사용하기
import tkinter as tk
root = tk.Tk()
def func1():
    lbl.config(text='Button1')
def func2():
    lbl.config(text='Button2')
def func3():
    lbl.config(text='Button3')
root = tk.Tk()
lbl = tk.Label(root,text="Educoing",underline=3)
lbl.pack()

var=tk.IntVar(root,0)
rb1=tk.Radiobutton(root, text="Choice1",variable=var,value=1,command=func1)
rb1.pack()

rb2=tk.Radiobutton(root, text="Choice2",variable=var,value=2,command=func2)
rb2.pack()

rb3=tk.Radiobutton(root, text="Choice3",variable=var,value=3,command=func3)
rb3.pack()

button = tk.Button(root, text = "print choice",command = lambda: print(var.get()))
button.pack()
root.mainloop()


#슬라이더 만들
import tkinter as tk
root = tk.Tk()
val=tk.IntVar()
val.set(0)
def func(scl):
    label.config(text ='Value = %d' % int(scl))
label = tk.Label(root,text='Value =%d'% val.get())

label.pack()
s=tk.Scale(root,label='scale',orient='h',from_=0,to =100,showvalue = False,variable=val,command=func)

s.pack()
root.mainloop()

#텍스트 박스 만들기
import tkinter as tk
root = tk.Tk()

def func(ev):
    label.config(text =e.get())#라벨 표시를 변경

label = tk.Label(root,text = 'INput Text')
label.pack()

e=tk.Entry(root)
e.pack()
#리턴키를 눌렸을때의 이벤트 추가
e.bind('<Return>',func)
root.mainloop()

#텍스트 박스 만들기2
import tkinter as tk
root = tk.Tk()

def func1():
    label.config(text =e.get())

label = tk.Label(root,text = 'INput Text')
label.pack()

e=tk.Entry(root)
e.pack()

e.bind('<Return>',func1)

button = tk.Button(root, text = "display",command = func1)
button.pack()
root.mainloop()


#텍스트 계산기 만들기 내풀이 
import tkinter as tk
root = tk.Tk()
root.geometry('200x200')

box1=tk.Entry(root)
box1.pack()
box2=tk.Entry(root)
box2.pack()
z=0
def func1():
    global z
    x=box1.get()
    y=box2.get()
    z=int(x)+int(y)

def func2():
    global z
    x=box1.get()
    y=box2.get()
    z=int(x)-int(y)

def func3():
    global z
    x=box1.get()
    y=box2.get()
    z=int(x)*int(y)

def func4():
    global z
    x=box1.get()
    y=box2.get()    
    if int(y)==0:
        lbl.config(text ='0으로 나눌수 없습니다.')
    else:
        z=int(x)/int(y)        
def func5(): #결과 값을 출력
    global z
    lbl.config(text =z)

var=tk.IntVar(root,0)
var.set(1)


box1.bind('<Return>',func4)

rb1=tk.Radiobutton(root, text="Button +",variable=var,value=1,command=func1)
rb1.pack()

rb2=tk.Radiobutton(root, text="Button -",variable=var,value='-',command=func2)
rb2.pack()

rb3=tk.Radiobutton(root, text="Button *",variable=var,value='*',command=func3)
rb3.pack()

rb4=tk.Radiobutton(root, text="Button /",variable=var,value='/',command=func4)
rb4.pack()

#결과 버튼 만들기
button = tk.Button(root, text = "result",command = func5)
button.pack()
#결과값 출력하는 라벨
lbl = tk.Label(root,text="결과 표시창",underline=3)
lbl.pack()
lbl.bind('<Return>',func5)
root.mainloop()


#텍스트 계산기 만들기 정답

import tkinter as tk
root = tk.Tk()

def func():
    ndata1=int(edit1.get())
    ndata2=int(edit2.get())
    result=0
    if nsel==1:
        result=ndata1+ndata2
    elif nsel==2:
        result=ndata1-ndata2
    elif nsel==3:
        
        result=ndata1*ndata2
    elif nsel==4:
        if ndata2==0:
            lbl.config(text="0으로 나눌 수 없습니다")
            return
        else:
            result = ndata1/ndata2
    else:
        lbl.config(text="잘못된 연산자")
        return

    strresult='%.2f'%result
    lbl.config(text=strresult)
    
nsel=1
def func1():
    global nsel
    nsel =1
def func2():
    global nsel
    nsel =2
def func3():
    global nsel
    nsel =3    
def func4():
    global nsel
    nsel =4
edit1 = tk.Entry(root)
edit1.pack()
edit2 = tk.Entry(root)
edit2.pack()

sel = tk.IntVar()#라디오 버튼값을 저장하는 정수형 variable 객체 생성
sel.set(1)#sel이 어딘가할단되면 그값을 1로하라 -> value가1인값을 선책함(맨위에칸)

rb1=tk.Radiobutton(root,text='Button +',variable=sel,value=1,command=func1)
rb1.pack()
rb2=tk.Radiobutton(root,text='Button -',variable=sel,value=2,command=func2)
rb2.pack()
rb3=tk.Radiobutton(root,text='Button /',variable=sel,value=3,command=func3)
rb3.pack()
rb4=tk.Radiobutton(root,text='Button *',variable=sel,value=4,command=func4)
rb4.pack()

button = tk.Button(root,text='Result',command=func)
button.pack()

lbl=tk.Label(root,text="결과 표시창")
lbl.pack()

root.mainloop()

#텍스트 계산기 만들기 정답 간단버젼

import tkinter as tk
root = tk.Tk()

def func():
    ndata1=int(edit1.get())
    ndata2=int(edit2.get())

    nsel=sel.get()
    result=0
    if nsel==1:
        result=ndata1+ndata2
    elif nsel==2:
        result=ndata1-ndata2
    elif nsel==3:
        
        result=ndata1*ndata2
    elif nsel==4:
        if ndata2==0:
            lbl.config(text="0으로 나눌 수 없습니다")
            return
        else:
            result = ndata1/ndata2
    else:
        lbl.config(text="잘못된 연산자")
        return

    strresult='%.2f'%result
    lbl.config(text=strresult)
    

edit1 = tk.Entry(root)
edit1.pack()
edit2 = tk.Entry(root)
edit2.pack()

sel = tk.IntVar()#tk의 변수를
sel.set(1)#sel이 어딘가할단되면 그값을 1로하라 -> value가1인값을 선책함(맨위에칸)

rb1=tk.Radiobutton(root,text='Button +',variable=sel,value=1)
rb1.pack()
rb2=tk.Radiobutton(root,text='Button -',variable=sel,value=2)
rb2.pack()
rb3=tk.Radiobutton(root,text='Button /',variable=sel,value=3)
rb3.pack()
rb4=tk.Radiobutton(root,text='Button *',variable=sel,value=4)
rb4.pack()

button = tk.Button(root,text='Result',command=func)
button.pack()

lbl=tk.Label(root,text="결과 표시창")
lbl.pack()

root.mainloop()

import tkinter as tk
root = tk.Tk()

def func():
    ndata1=int(edit1.get())
    ndata2=int(edit2.get())

    nsel=sel.get()
    result=0
    if nsel==1:
        result=ndata1+ndata2
    elif nsel==2:
        result=ndata1-ndata2
    elif nsel==3:
        
        result=ndata1*ndata2
    elif nsel==4:
        if ndata2==0:
            lbl.config(text="0으로 나눌 수 없습니다")
            return
        else:
            result = ndata1/ndata2
    else:
        lbl.config(text="잘못된 연산자")
        return

    strresult='%.2f'%result
    lbl.config(text=strresult)
    

edit1 = tk.Entry(root)
edit1.pack()
edit2 = tk.Entry(root)
edit2.pack()

sel = tk.IntVar()
sel.set(1)

radios=[]
operator=['+','-','*','/']
for i in range(4):
    radio_=tk.Radiobutton(root,text='Button %s'%operator[i],variable=sel,value=i+1)
    radios.append(radio_)
    radios[i].pack()
button = tk.Button(root,text='result',command=func)
button.pack()
lbl=tk.Label(root,text="결과 표시창")
lbl.pack()

root.mainloop()

'''