2013-06-01 2 views
0

기본적으로 기본적인 파이 게임 드로잉 앱을위한 모듈을 작성하고 있습니다. 인스턴트 메신저 창을 사용하여 사용자 정의 색상에 대한 세 가지 색상 값을 가져옵니다.클래스와 함수에 문제가 있습니다.

: 여기

가 TK에 창 내 코드입니다 혼란스러워지기 시작 3 개 색 그러나 나는 모든 것이 잘 작동하도록하는 방법을 파악하지 못할 만든 값과 메신저에 대한 TK에 창을 askes을 여는 파일이
from Tkinter import * 

class Custom(): 
    def get_color(self): 
     root = Tk() 
     root.configure(background='black') 
     root.wm_title("Custom") 

     label1 = Label(root, text='Red Value:',bg="black", fg="white") 
     label1.grid(row=2, column=0,columnspan=2) 
     enter1 = Entry(root, bg='white') 
     enter1.grid(row=3, column=0,columnspan=2) 


     label2 = Label(root, text='Green Value:',bg="black", fg="white") 
     label2.grid(row=4, column=0,columnspan=2) 
     enter2 = Entry(root, bg='white') 
     enter2.grid(row=5, column=0, columnspan=2) 

     label3 = Label(root, text='Blue Value:',bg="black", fg="white") 
     label3.grid(row=6, column=0,columnspan=2) 
     enter3 = Entry(root, bg='white') 
     enter3.grid(row=7, column=0, columnspan=2) 

     btn1 = Button(root, text='OK', command= self.return_color, bg="black",activebackground="green", fg="white") 
     btn1.grid(row=14, column=0, columnspan=2) 
     label7 = Label(root, bg="black", fg = "white") 
     label7.grid(row=15, column=0, columnspan=2) 

     enter1.focus() 

     root.mainloop() 

    def return_color(self): 
     try: 
      r = str(self.enter1.get()) 
      g = str(self.enter2.get()) 
      b = str(self.enter3.get()) 
     except ValueError: 
      window.label7.config(text='Enter Numbers!', fg = "red") 
     root.destroy() 
     return (r,g,b) 

c = Custom() 
c.get_color() 

는하지만, 그래서 두 가지 기능을 만들어 클래스에 넣어하지만 난 내가 그나마 return_color을 실행하는 데 필요한 OK 버튼을 클릭하면 지금은 다음 get_color를 실행할 필요가 혼란스러워지고 메신저 가져올 수 있도록 노력 메신저 작품 만약 이것이 이것이 유일한 방법 인 지 알기를 바랍니다. return_colorself.enter1.get()과 같고 enter2와 3은 같음

0 메신저 내 무승부 패드 프로그램을 제공하는 곳

은 여기에 있습니다 :

if key[pygame.K_c]: 
    import CustomColor 
    c = CustomColor.Custom() 
    c.get_color() 
    self.color = c.return_color() 

메신저 사람이 모든 걸 포기하고 내가 그렇게 FUL 감사 것이 취소 할 수 있다면 정말 혼란스러워지기 시작!

답변

3

반환 값이 return_color 인 것은 사용하지 않습니다. 명령 옵션으로 전달 된 함수에 대한 참조를 사용하여 호출하지만 결과를 저장하지 않기 때문입니다. 당신이 할 수있는 것은 돌이 시작 return_color에서 클래스의 속성과 값을 저장하고 통화 후 get_color에서 return 문을 추가하는 것입니다 색상을 사용하기 전에

def get_color() 
    # Initialize the attributes with a default value 
    self.r = '' 
    self.g = '' 
    self.b = '' 
    # ... 
    root.mainloop() 
    return self.r, self.g, self.b 

def return_color(self): 
    # Entry.get returns a string, don't need to call to str() 
    self.r = self.enter1.get() 
    self.g = self.enter2.get() 
    self.b = self.enter3.get() 
    root.destroy() 

을, 당신은 형식이 있음을 확인할 수 있습니다 옳은. 그렇다면 더 의미있는 이름으로 함수의 이름을 바꾸는 것이 좋습니다. Tk 요소를 만들고 철회하고 클래스에서 Toplevel을 사용합니다 (두 개 이상의 Custom 객체를 만드는 경우 실제로는 여러 개의 Tk 요소를 만드는 경우가 있으므로 피해야합니다).

+0

내 문제는 사용자 정의 인스턴스가 클래스 – Serial

+1

@ChristianCareaga에있는 경우에도 'enter1'속성이 없다는 것을 알려주는 것입니다. 클래스의 속성으로 설정하는 것을 잊었 기 때문입니다. 'self.enter1 = ..'을 사용하십시오. .' 대신'enter1 = ...'을 사용합니다. –

+0

자, 우리는 키 누르기 이벤트 부분을 동일하게 유지해야합니다. – Serial

관련 문제