본문 바로가기
PYTHON/PYTHON GUI

파이썬 GUI 관련 코드[PYTHON개발]

by cellin 2024. 1. 11.

파이썬 GUI 관련 코드

 

 

 

1. 파이썬 GUI -윈도우 생성하는 코드

 

 

코드 |

import tkinter 
top = tkinter.Tk()
# you insert code here
top.mainloop()
 

 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

2. Button

클릭으로 다양한 이벤트들을 연결할 수 있는 GUI

 

 

코드 |

from tkinter import *
top = Tk()
B = Button(top,width=10 ,height= 10,text = "push")
B.place(x = 10,y = 10)
top.mainloop()
 

 

위 코드 실행시 생성되는 윈도우

 

 

3. 버튼 클릭시 이벤트 처리

 

코드 |

from tkinter import *
from tkinter import messagebox

def Callhello():
    msg = messagebox.showinfo( "버튼 클릭이벤트","버튼 클릭이 정상작동하였습니다")

top = Tk()
B = Button( top,text = "Push", command = Callhello)
B.place(x = 50,y = 50)
top.mainloop()
 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

4. Canvas

사진이나 다양한 형태의 그림등을 명시하기 위해서 표시하는 부분

 

코드 |

from tkinter import *

top = Tk()
C = Canvas(top,bg = "lightpink", height = 150, width = 200)
C.pack()
top.mainloop()
 

위 코드 실행시 생성되는 윈도우

 

 

 

 

5. pack()

윈도우에 상대 위치로 각 widget을 배치하는 방법

각 side라는 객체 속성을 바탕으로 LEFT,RIGHT,TOP,BOTTOM을 바탕으로 방향에 맞게 각 객체를 배치 해주는 방식

[총 4가지 방향 제공 : LEFT, TOP, BOTTOM, RIGHT]

 

코드 |

from tkinter import *
root = Tk()
frame = Frame(root)
frame.pack()

topbutton = Button(frame, text = "Top")
topbutton.pack( side = TOP)

leftbutton = Button(frame, text = "Left")
leftbutton.pack( side = LEFT)

rightbutton = Button(frame, text = "Rigtht")
rightbutton.pack( side = RIGHT )

letf1button = Button(frame, text = "Letf1")
letf1button.pack( side = LEFT )

bottombutton = Button(frame, text = "Bottom")
bottombutton.pack( side = BOTTOM)

abottombutton = Button(frame, text = "Bottom1")
abottombutton.pack( side = BOTTOM)

root.mainloop()
 

 

위 코드 실행시 생성되는 윈도우

 

 

6. grid()

윈도우를 각 표로 나누어 각 표의 위치에 맞게 놓는 방법

**같은 열에 크기가 다르다면, 가장 큰 길이 기준으로 칸이 지정

 

 

코드 |

from  tkinter import *
root = Tk(  )
b = 0
for r in range(5):
    for c in range(5):
        b = b + 1
        Button(root, text = str(b)).grid(row = r,column = c)

root.mainloop()
 

 

 

위 코드 실행시 생성되는 윈도우

 

 

7. place()

윈도우에 절대 위치로 각 위젯을 배치하는 구조

 

 

코드 |

from tkinter import *

root = Tk()

A = Button(root, text = "Add")
A.place(x = 100, y = 100)

B = Button(root, text = "Add1")
B.place(x = 10, y = 10)

C = Button(root, text = "Add2")
C.place(x = 100, y = 10)

D = Button(root, text = "Add2")
D.place(x = 10, y = 100)

root.mainloop()
 

 

 

 

위 코드 실행시 생성되는 윈도우

 

 

8. checkbutton [체크박스]

속성에 대해서 참/거짓(true/False)로 표현할 부분에 대해서 많은 사람들이 체크버튼(checkbutton)를 사용

 

 

w = Checkbutton(target, option...)  
 

target - 체크버튼(checkbutton)을 표시할 타켓

option- 체크버튼(checkbutton)에 대한 세부 설정

 

 

 

코드 |

from tkinter import *

top = Tk()
C_Var1 = IntVar()
C_Var2 = IntVar()
Check1 = Checkbutton(top, text="Check1", variable=C_Var1, \
                 onvalue=1, offvalue=0)
Check2 = Checkbutton(top, text="Check2", variable=C_Var2, \
                 onvalue=1, offvalue=0)

Check1.pack()
Check2.pack()
top.mainloop()
 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

9. Entry

​텍스트를 입력하는 부분

 

 

코드 |

from tkinter import *

top = Tk()
S_Var1 = StringVar()
E1 = Entry(top, bd = 5,textvariable = S_Var1)
E1.pack(side = RIGHT)
top.mainloop()
 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

10. Label

변하지 않는 텍스트를 표기 하기 위해서 사용(텍스트에 대한 수정이 불가능)

여러 줄에 대한 표현도 가능합니다. 관물론, 사이즈 등의 대한 조절도 가능

 

코드 |

from tkinter import *

root = Tk()

var = StringVar()
label = Label( root, textvariable = var, relief = RAISED )

var.set("Name")
label.pack(side = LEFT)
S_Var1 = StringVar()
E1 = Entry(root,textvariable = S_Var1)
E1.pack(side = RIGHT)

root.mainloop()
 

 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

11. Listbox

특정 항목들에 대해서 나열

 

코드 |

from tkinter import *

top = Tk()

Lb1 = Listbox(top)
Lb1.insert(1, "Korea")
Lb1.insert(2, "USA")
Lb1.insert(3, "Russia")
Lb1.insert(4, "China")
Lb1.insert(5, "France")

Lb1.pack()
Lb1.delete(4)
top.mainloop()
 

 

 

위 코드 실행시 생성되는 윈도우

 

 

12.Menu

File, Edit, Help등의 메뉴로 구성되는 윈도우 상단에 있는 메뉴들을 생성할 수 있는 방법

Add_cascade() - 상위 메뉴 탭에 대한 설정

Add_command() - 상위 메뉴 버튼에 대한 항목 추가

Add_separator() - 분리 선 추가

 

코드 |

from tkinter import *

def domenu():
    print("OK")

root = Tk()
menubar = Menu(root)                                # 윈도우에 메뉴바 추가
filemenu = Menu(menubar, tearoff=0)                 # 상위 메뉴 탭 항목 추가
menubar.add_cascade(label="File", menu=filemenu)    # 상위 메뉴 탭 설정
filemenu.add_command(label="New", command=domenu)   # 항목 추가
filemenu.add_command(label="Open", command=domenu)
filemenu.add_command(label="Save", command=domenu)
filemenu.add_command(label="Save as...", command=domenu)
filemenu.add_separator()                            # 분리선 추가
filemenu.add_command(label="Exit", command=root.quit)

editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edit", menu=editmenu)
editmenu.add_command(label="Copy", command=domenu)
editmenu.add_command(label="Paste", command=domenu)
editmenu.add_separator()
editmenu.add_command(label="Delete", command=domenu)

helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=domenu)

root.config(menu=menubar)             # 생성된 객체를 위에서 생성된 메뉴바에 연결         
root.mainloop()
 

 

 

 

 

위 코드 실행시 생성되는 윈도우

 
 
 

 

 

 

13. Menubutton

메뉴바와 달리 버튼에 메뉴가 표시되게 하는 방법

 

코드 |

from tkinter import *

root = Tk()
mb = Menubutton(root, text="MenuButton")
mb.grid()
mb.menu = Menu(mb, tearoff=0)
mb["menu"] = mb.menu

mb.menu.add_checkbutton(label="BUTTON1")
mb.menu.add_checkbutton(label="BUTTON2")

mb.pack()
root.mainloop()
 

 

위 코드 실행시 생성되는 윈도우

 
 
 

 

 

 

14. Message

Message는 여러 줄의 텍스트 및 숫자등을 표현하기 위해서 사용

주어진 비율로 또는 width 바탕으로 여러 줄로 표현

 

코드 |

from tkinter import *

root = Tk()
var = StringVar()
Msg = Message( root, textvariable = var)

var.set("HELLO MESSAGE WINDOW")
Msg.pack()
root.mainloop()
​
 

코드설명 |

StringVar()를 하나 생성, 이 부분을 Message와 연결

이 후, set()메쏘드를 이용하여 원하시는 테스트를 입력

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

15. Radiobutton

 

코드 |

from tkinter import *

root = Tk()
var = IntVar()
Kor = Radiobutton(root, text = "1번", variable = var, value = 1)
Kor.pack( anchor = W )

CHN = Radiobutton(root, text = "2번", variable = var, value = 2)
CHN.pack( anchor = W )

USA = Radiobutton(root, text = "3번", variable = var, value = 3)
USA.pack( anchor = W)

label = Label(root)
label.pack()
root.mainloop()
 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

16. scale

GUI상에서 특정 포인트를 조절하여 값을 반환 받는 위젯

 

 

코드 |

from tkinter import * 
root = Tk() 
var = DoubleVar() 
scale = Scale( root, variable = var, orient = HORIZONTAL, from_ = -1, to = 1, resolution = 0.1) 
scale.pack(anchor = CENTER) 
root.mainloop()
 

코드설명 |

orient 방향 = ORIZONTAL (x 방향)VERTICAL (Y방향)

scale의 시작과 끝을 표시

- from_ (값의 최소 )

- to (값의 최대)

- resolution (값의 변화 범위)

 

 

 

위 코드 실행시 생성되는 윈도우

 
 
 
 
 

 

17. scrollbar

 

코드 |

from tkinter import *

root = Tk()
scrollbar = Scrollbar(root)		# 스크롤바 생성
scrollbar.pack( side = RIGHT, fill = Y )

mylist = Listbox(root, yscrollcommand = scrollbar.set ) # 리스트바 생성, 스크롤바연결
for line in range(50):
    mylist.insert(END, str(line))

mylist.pack( side = LEFT )
scrollbar.config( command = mylist.yview ) #윈도우에 스크롤바 연결

mainloop()
 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

18. Text

Text의 경우, Entry부분과 거의 유사하지만, 한 줄뿐만 아니라 여러 줄을 표현 할 수 있습니다.

 

 

코드 |

from tkinter import *
root = Tk()
text = Text(root)
text.insert(INSERT, "APPIA")
text.insert(END, "HELLO")
text.pack()
root.mainloop()
 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

19. Spinbox

클릭으로 값을 조절

Spinbox 옵션중에 from_은 최소값 to은 최대값

from tkinter import *

master = Tk()
w = Spinbox(master, from_ = 0, to = 10)
w.pack()
mainloop()
 

 

 

 

위 코드 실행시 생성되는 윈도우

 

 

 

 

 

 

 

 

 

 

 

 

 

사진: UnsplashMed Badr Chemmaoui

728x90
반응형