2016-09-05 9 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は親の中にありますrootkwargsのどれも追加していないようです。

  2. kwargs['background'] = 'red'を追加しても、何の効果もありません。私はこの構文を使用する人々の例を見てきました:herehere背景色が赤くならないのはなぜですか?

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) 

このへの呼び出しで渡された場合はキーワードを上書きします。これを避けるには、追加のロジックが必要になります。

関連する問題