2016-09-05 3 views
0

키워드 인수 (**options)를 tk.Frame에서 상속받은 Tkinter 클래스에 어떻게 추가합니까? 예를 들어, 프레임의 widthheight (또는 다른 옵션)을 설정하면됩니다.Tkinter : 상속받은 클래스에 kwargs를 추가하는 방법은 무엇입니까?

더 넓은 질문은 : 클래스가 상속하는 객체에 ** kwargs를 어떻게 추가합니까?

class profiles(tk.Frame): 

    def __init__(self, parent, *args, **kwargs): 
    self.parent = parent 
    kwargs['width'] = 900 
    kwargs['height'] = 600 
    super(profiles, self).__init__(parent, *args, **kwargs) 

편집 :

여기에 이해 노력하고있어 전체 코드 예제입니다.

  1. self.parent.geometry('900x600') 내가 창 크기를 조정하는 기대하지 :이 코드에 대한

    import tkinter as tk 
    
    class profiles(tk.Frame): 
    
        def __init__(self, parent, *args, **kwargs): 
        self.parent = parent 
        kwargs['width'] = 900 
        kwargs['height'] = 600 
        kwargs['background'] = 'red' 
        #tk.Frame.__init__(self, parent, *args, **kwargs) 
        super(profiles, self).__init__(parent, *args, **kwargs) 
    
        #self.parent.geometry('900x600') 
    
        self.profile_name_label = tk.Label(self.parent, text='Profile name:') 
        self.profile_name_label.grid(row=0, column=0, padx=(20), pady=20) 
    
        self.ProfileNameVar = tk.StringVar() 
        self.profile_name_entry = tk.Entry(self.parent, textvariable=self.ProfileNameVar) 
        self.profile_name_entry.grid(row=0, column=1, pady=(20)) 
    
    root = tk.Tk() 
    profiles(root) 
    root.mainloop() 
    

    질문 :이 전체 코드입니다. kwargs [ 'width'] = 900이고 kwargs [ 'height'] = 600 같은 일을해야합니까 tk.Frame이 부모 root 안에 있습니까?kwargs 아무 것도 추가하지 않는 것 같습니다.

  2. kwargs['background'] = 'red'을 추가해도 아무런 효과가 없습니다. 이 구문을 사용하는 사람들의 예를 보았습니다 : here, here. 왜 배경색이 빨간색으로 변하지 않습니까?

picture of tkinter window

+0

그래서 실제로 너는 높이와 너비를 강요하고 있습니까? –

+0

코드에 어떤 문제가 있습니까? – Goyo

답변

0

그냥 kwargs에 추가하지 않고 사용자가 직접 추가 할 것을 추가

class profiles(tk.Frame): 

    def __init__(self, master, *args, **kwargs): 
     tk.Frame.__init__(self, master, width=900, height=800, *args, **kwargs) 
+2

'kwargs '에'width' 또는'height'가 이미있는 경우 중복 된 인수 오류가 발생합니다 –

0

당신은 이런 식으로 할 것 :

class Profiles(tk.Frame): 
    def __init__(self, parent, *args, **kwargs): 
     self.parent = parent 
     kwargs.update(width=900, height=600) 
     super(profiles, self).__init__(parent, *args, **kwargs) 

이를에 대한 호출에서 키워드가 전달 된 경우 키워드를 재정의합니다.. 이를 피하려면 추가 로직이 필요합니다.

관련 문제