我有框架類A和B。 B類是在A類中 "創建 "的。 A是作為 "自我 "的父類。
問題:結果顯示B在A之外。
問題:結果顯示,B在A之外。 沒有提出錯誤。
在另一個帖子中回答說,widget回傳None。 所以根視窗被選為默認的。
但是print(instance B) return ".!instance B name" not None.
這是代碼:
import tkinter as tk
# class B
class Frm_btn(tk.Frame)。
def __init__(self, parent)。
tk.Frame.__init__(self, width=24, height=24, bg="green")
self.parent=父母
# class A
class Frm_tool(tk.Frame)。
def __init__(self):
tk.Frame.__init__(self, width=48, height=48, bg="blue")
self.parent=win
#類B的實體。
self.frm_btn=Frm_btn(self)
self.frm_btn.pack()
print(self)# return ".!frm_tool"
print(self.frm_btn)# return ".!frm_btn"。
win=tk.Tk()
win.configure(bg="red")
#類的實體A
frm_tool=Frm_tool()
frm_tool.pack()
win.mainloop()
uj5u.com熱心網友回復:
你似乎有點糊涂了。位置引數master是默認設定的,或者作為第一個引數。 例子:
b = tk.Button() #master默認為根視窗
b.pack()
b2= tk.Button(my_frame) #master被設定為my_frame。
建構式回傳一個參考,而不是像所說的None。每個不回傳其他東西的函式都會回傳None,這就是Python的作業方式。
例如:
b = tk.Button()
c = b.pack()
print(c)
還要注意的是,如果你把一個變數分配給由函式或方法回傳的東西,最后回傳的值會分配給你的變數。 所以這段代碼:
b = tk.Button() .pack()
與此代碼相同:
b = tk.Button() #returns a reference。
b = b.pack() #returns None[/span]。
正如@MegaIng已經給你指出的。如果你想在一個繼承類中設定主控,你必須明確這樣做。例如:
class Frm_btn(tk.Frame)。
def __init__(self, parent)。
tk.Frame.__init__(self,parent, width=24, height=24, bg="green")
self.parent=parent
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328110.html
標籤:
上一篇:對建構式的未定義參考問題
