기본 콘텐츠로 건너뛰기

tkinter 콤보박스 간단사용예

 tkinter 의 간단한 콤보박스 사용예입니다. 

콤보박스에서 컬러를 선택하면 그 아래 Label 의 배경색이 변합니다. 

그 아래 Progressbar 는 그냥 심심해서(?) 넣어 본것 입니다. indeterminate 모드로 넣은 것인데 indeterminate 모드는 정확한 진행정도를 나타내는게 아니라 그냥 진행중이라는걸 표시하는 것입니다. 진행바가 그냥 좌우로 움직이기만 합니다. 

from tkinter import *
from tkinter.ttk import *
from tkinter.messagebox import *
 
class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack(side="top")
        self.create_widgets()
 
    def create_widgets(self):
        self.cb = Combobox(width=10,value=['white','blue','yellow','black','red'])
        self.cb.current(0)
        self.cb.bind("<<ComboboxSelected>>", self.change_color)
        self.cb.pack()
        
        self.style = Style()
        self.style.configure("BW.TLabel", foreground="black", background="white")
         
        self.l1 = Label(text = "Color Label", style = "BW.TLabel")
        self.l1.pack()
         
        p = Progressbar(mode='indeterminate')
        p.pack()
        p.start(15)
         
    def change_color(self,event):
        color = self.cb.get()
        self.style.configure("BW.TLabel", foreground="black", background=color)
 
root = Tk()
root.title("tk 테스트")
root.geometry("300x200+500+500")
app = Application(master=root)
app.mainloop()


기본적인 틀은 이전 예제와 같습니다. 

콤보박스 생성시에 컬러 이름을 넣고 <<ComboSelected>> 이벤트가 발생하면(콤보박스에서 특정색을 선택하면) change_color 함수를 실행해서 Label 의 Style 에서 background color 를 변경해 줍니다.

ProgressBar 는 간단히 indeterminate 모드로 생성해서 Start 해 줍니다. Start 시에 인자는 다음 이벤트가 발생하는 시간으로 시간이 작으면 더 빨리 움직입니다.

실행화면 입니다. 간단한 사용예인 만큼 디자인은 신경쓰지 않는 걸로....^^;

댓글

이 블로그의 인기 게시물

pygame 에서 이미지 회전하는 방법

 pygame 에서 transform.rotate 를 사용해서 이미지를 회전시켜 보면 생각과는 달리 요상하게 회전합니다.    따라서 이를 해결해 보고자 검색해 보다 다음 링크를 찾았습니다. https://stackoverflow.com/questions/4183208/how-do-i-rotate-an-image-around-its-center-using-pygame/54714144 위 링크를 보면 파이게임의 이미지 회전이 왜 그렇게 이상한지 알 수 있고 답변하신 분이 blitRotate 라는 함수를 만들어 놓아서 이용할 수 있습니다.  제 소스에 가져와서 테스트를 해 봤는데 제 생각대로 회전 하더군요.  def blitRotate(image, pos, originPos, angle):       #calcaulate the axis aligned bounding box of the rotated image     w, h       = image.get_size()     box        = [pygame.math.Vector2(p) for p in [(0, 0), (w, 0), (w, -h), (0, -h)]]     box_rotate = [p.rotate(angle) for p in box]     min_box    = (min(box_rotate, key=lambda p: p[0])[0], min(box_rotate, key=lambda p: p[1])[1])     max_box    = (max(box_rotate, key=lambda p: p[0])[0], max...

모닝 JA 엔진오일 교환. 보쉬필터 구입

요즘은 주행거리가 1만km 가 안되다보니 1년에 한번씩 엔진오일을 교환하고 있습니다.  1년에 한번이라 그냥 오토큐에서 교환을 했었지만 오토큐의 오일교환 가격이 너무 오른데다가 이젠 보증도 끝났기 때문에 오일과 필터를 구입해서 공임나라로 갔습니다.  > 오일은 kixx g1 fe 1L x 3 을 구입하고 필터는 보쉬제품으로 구입했습니다.   A3003 이 에어필터이고 O0356 이 오일필터 입니다. 기아의 순정부품보단 조금 가격이 저렴합니다.  > 오랜만에 공임나라 갔는데 교환공임이 17000원 이네요. 물가가 오른만큼 오일교환 비용도 예전보다 좀 올랐네요.  필터 품번도 기록해 둘겸 올려 봅니다. ^^;

VirtualBox 에 Lubutu 설치

 얼마전에 antix linux 를 설치했었는데 아무래도 늘 이용하던 패키지들이(앱들이) 아니다 보니 이런저런 시간지연(?)이 좀 되어서 천천히 알아가기로 하고 일단 익숙한 xubuntu 를 설치해서 쓰고자 했습니다만... 제가 보통 쓰는 virtualbox 에서 xubuntu 가 설치완료가 안되더군요. 중간에 멈춰버립니다. 부팅해보면 설치는 대충된거 같은데 뭔가 마지막 프로세스를 완료하지 못해서인지 로그인도 안됩니다.  몇번 해보다 안되서 그냥 루분투를 설치했습니다. 루분투는 잘 설치되네요. 루분투는 개인적으론 좀 애매하다고 생각해서....일반적인 데스크탑으로 쓰기엔 xubuntu 정도는 되야 하지 않나 생각합니다.  루분투는 넷북에 설치해 본 바로도 xubuntu 보다 빠르다는 느낌이 없어서 말이죠. 저사양 배포판일텐데.....뭐..넷북이 워낙에 느려서 그럴수도 있지만 antix 리눅스 설치해 본 바로는 lubuntu 보단 낫더라고요. virtualbox에 xubuntu 가 설치가 안되서 예상외로 시간을 좀 까먹었네요. 쩝....