PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/07/23 21:08:27
Name 김유라
File #1 1.png (5.1 KB), Download : 19
Subject [질문] 파이썬 과제 질문 드립니다. (코드 일부만 수정)



해당 화면이 구동되며, RGB 스케일 바를 조정하면 폰트 색이 변하는 프로그램을 제작하려고 합니다.
이를 위해서 코드를 2줄 수정해야하는데... 다른건 다 된 것 같은데 변수 선언 후에 윈도우를 어떻게 해야할지 잘 모르겠습니다.

코드는 밑과 같습니다.

-------------------------------
import tkinter as tk

def e2j(en):
    if en=='red':
        return u'빨강'
    elif en=='green':
        return u'초록'
    else:
        return u'파랑'


def change_bg(item, color):
    item.config(bg=color)
    for child in item.winfo_children():
        change_bg(child, color)


class MyWindow(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        info = tk.Label(self, text=u'색상 변화를 보세요.', font = ('궁서체', '12', 'bold'))
        info.pack(padx=10, pady=5)
        f = tk.Frame(self)
        f.pack(padx=5, pady=5)
        self.sc = dict()
        
        for i, color in enumerate(['red','green','blue']):
            la = tk.Label(root, text=e2j(color), fg=color)
            la.grid(row=0, column=i, padx=10, pady=5)

            self.sc[color] = tk.Scale(root, from_=0, to=255, orient='vertical', command=self.M_change)
            self.sc[color].set(255)
            self.sc[color].grid(row=1,column=i,padx=10, pady=5)

    def M_change(self, event):
        color = '#%02X%02X%02X' % (self.sc['red'].get(), self.sc['green'].get(), self.sc['blue'].get())
        change_bg(self, color)


if __name__ == '__main__':
    root = tk.Tk()
    app = MyWindow(root)
    root.geometry("500x300+0+0")
    root.mainloop()

---------------------------
굵은 줄로 된 부분을 수정하거나, 아지면 위젯 호출 부분만 수정하면 될 것 같은데 어떻게 수정하면 될까요?
해당 코드로 컴파일을 하면 실행은 되는데 라벨 혹은 스케일 둘 중 하나가 호출이 되지 않습니다ㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
The Normal One
19/07/23 23:22
수정 아이콘
폰트 색이 바뀌어야 하는게 맞나요?
M_change 함수에서 color 변수에 들어가는게 RGB 데이터라서 이 데이터를 어느 곳이든 한곳에 넣어야 할 거 같다는 생각이 들어서요.
The Normal One
19/07/23 23:33
수정 아이콘
아 '색상 변화를 보세요' 여기에 들어가면 될 거 같네요.
코드를 그대로 가져왔는데 왜 제 거에는 안뜨는지 모르겠지만..

self.color_info = info 를 __init__ 선언부에서 info 를 정의한 다음줄에 넣고
M_change 에서 change_bg를 change_bg(self.color_info, color) 이런식으로 호출하면 될 거 같긴한데
위에서 말씀드렸다시피 제 컴에서는 '색상 변화를 보세요'라는 메세지가 안떠서.. 테스트가 정확히는 안됐지만 다른 레이블에다 놓고 테스트 했을 때는 잘 동작했습니다.
김유라
19/07/23 23:45
수정 아이콘
(수정됨) 어... 그게 문제입니다ㅠ도대체 색상 변화를 보세요 라벨이 왜 안뜨는건지를 도저히 모르겠어요...
김유라
19/07/23 23:55
수정 아이콘
def change_bg(item, color):
(1)____________________
for child in item.winfo_children():
change_bg(child, color)

class MyWindow(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
info = tk.Label(self, text=u'색상 변화를 보세요 ', font=('궁서체', '12', 'bold'))
info.pack(padx=10, pady=5)
f = tk.Frame(self)
f.pack(padx=5, pady=5)
self.sc = dict()
for i, color in enumerate(['red', 'green', 'blue']):
la = (2)_________________________
la.grid(row=0, column=i, padx=10, pady=5)
self.sc[color] = (3)___________________
self.sc[color].set(255)
self.sc[color].grid(row=1,
column=i,
padx=10, pady=5)

def M_change(self, event):
color = '#%02X%02X%02X' % (self.sc['red'].get(), self.sc['green'].get(), self.sc['blue'].get())
change_bg(self, color)

if __name__ == '__main__':
(4)_________________________________________


문제 자체는 이렇게 나왔습니다. 그래서 다른 코드 수정 없이 분명 해답이 있는 것 같은데...
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
139371 [질문] 운전하는 재미란 무엇인가요? [17] possible5997 19/11/11 5997
139370 [질문] 중국 역사에서 어떤 인물을 가장 좋아하시나요? [7] 슈로더3056 19/11/11 3056
139369 [질문] 오피스 관련내용 질문입니다! 파란토마토2235 19/11/11 2235
139368 [질문] 프린터가 이상합니다. aDayInTheLife2063 19/11/11 2063
139367 [질문] 아이즈원 조사 중간발표? 언젠가요? [1] 기다리다똥된다2545 19/11/11 2545
139366 [질문] 바닥용 매트리스 추천 부탁드립니다 [1] 삭제됨3200 19/11/11 3200
139365 [질문] 인터넷 바꾸고 크롬 원격이 매우 느려졌습니다. papaGom3747 19/11/11 3747
139364 [질문] 9급 공시 초시생인데 이제 기출 다풀었는데 내년까지 하면 합 가능할까요? [7] 삭제됨4640 19/11/11 4640
139363 [질문] 내장탕 맛집을 찾습니다. [7] 잉차잉차3281 19/11/11 3281
139362 [질문] 마이크로 노래 부르는데, 컴퓨터로 트는 BGM이랑 같이 녹음되게 하고 싶은데요 [4] 마지막처럼2556 19/11/10 2556
139361 [질문] 제주도 여행질문입니다 [7] 페티쉬왕스타킹3383 19/11/10 3383
139360 [질문] 새로 이사갈 집이 전세라 벽걸이 tv를 어떻게 하는게 나을까요 [5] 바카스5058 19/11/10 5058
139359 [질문] 엑셀 관련 질문 [6] 醉翁之意不在酒3017 19/11/10 3017
139358 [질문] 컵라면 어떤게 맛있나요?? [33] 미라클신화4833 19/11/10 4833
139356 [질문] 행복하신가요? [12] EY3448 19/11/10 3448
139355 [질문] 컴퓨터 고장에 관한 질문입니다. [4] 피를마시는새3472 19/11/10 3472
139354 [질문] 만들기 쉬운 반찬같은거 추천 부탁드립니다 [19] 포이리에3992 19/11/10 3992
139352 [질문] 웬만해선 한번정도는 들어법을한 외국곡 모두 알려주세요. [9] 레너블2349 19/11/10 2349
139351 [질문] SPOTV EPL 중계 [2] 서쪽으로가자2692 19/11/10 2692
139350 [질문] 오늘 롤드컵 결승 질문 [4] 안초비3164 19/11/10 3164
139349 [질문] 시티즈 스카이라인 DLC 뭐사야되는지 알려주세요! [3] 잘생김용현4729 19/11/10 4729
139348 [질문] HDMI 와 DVI 화질 차이 많이 나나요? [6] 불타는밀밭10962 19/11/10 10962
139347 [질문] 무지하게 시끄러운 알람 시계 좀 혹시 추천 부탁드립니다.(초침소리 안나는 걸로..) [5] 삭제됨4128 19/11/10 4128
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로