2016-09-05 124 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) 

編輯

這裏是什麼,我想了解一個完整的代碼示例。這是整個代碼:

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() 

問題,關於這個代碼:

  1. self.parent.geometry('900x600')做什麼,我希望這是調整窗口的大小。 應該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) 

這將覆蓋關鍵字,如果它們在調用時傳入的話。需要額外的邏輯來避免這種情況。

相關問題