Python一个实例的Tkinter育儿问题
Python Tkinter parenting problem of an instance
我有框架 class A 和 B,
Bclass是在Aclass中“创建”的,
A 的父级为“self”。
问题:结果显示B在A之外。
没有出现错误。
在另一个 post 中回答了那个小部件 returned None。
因此默认选择根 window。
但打印(实例 B)return“.!实例 B 名称”不是 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=parent
# class A
class Frm_tool(tk.Frame):
def __init__(self):
tk.Frame.__init__(self, width=48, height=48, bg="blue")
self.parent=win
# instance of class 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")
# instance of class A
frm_tool=Frm_tool()
frm_tool.pack()
win.mainloop()
你好像有点糊涂了。位置参数 master 默认设置或作为第一个参数。
示例:
b = tk.Button() #master is the root window by default
b.pack()
b2= tk.Button(my_frame) #master is set to my_frame
构造函数 returns 引用不是 None
所述。 None 由每个发送 returns 其他东西的函数返回,这就是 python 的工作方式。
例如:
b = tk.Button()
c = b.pack()
print(c)
另请注意,如果您将变量分配给函数或方法返回的内容,最后返回的值将分配给您的变量。
所以这段代码:
b = tk.Button().pack()
同样是这段代码:
b = tk.Button() #returns a reference
b = b.pack() #returns None
正如@MegaIng 已经向您指出的那样。如果你想在继承 class 中设置主人,你必须明确地这样做。例如:
class Frm_btn(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self,parent, width=24, height=24, bg="green")
self.parent=parent
我有框架 class A 和 B, Bclass是在Aclass中“创建”的, A 的父级为“self”。
问题:结果显示B在A之外。 没有出现错误。
在另一个 post 中回答了那个小部件 returned None。 因此默认选择根 window。
但打印(实例 B)return“.!实例 B 名称”不是 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=parent
# class A
class Frm_tool(tk.Frame):
def __init__(self):
tk.Frame.__init__(self, width=48, height=48, bg="blue")
self.parent=win
# instance of class 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")
# instance of class A
frm_tool=Frm_tool()
frm_tool.pack()
win.mainloop()
你好像有点糊涂了。位置参数 master 默认设置或作为第一个参数。 示例:
b = tk.Button() #master is the root window by default
b.pack()
b2= tk.Button(my_frame) #master is set to my_frame
构造函数 returns 引用不是 None
所述。 None 由每个发送 returns 其他东西的函数返回,这就是 python 的工作方式。
例如:
b = tk.Button()
c = b.pack()
print(c)
另请注意,如果您将变量分配给函数或方法返回的内容,最后返回的值将分配给您的变量。 所以这段代码:
b = tk.Button().pack()
同样是这段代码:
b = tk.Button() #returns a reference
b = b.pack() #returns None
正如@MegaIng 已经向您指出的那样。如果你想在继承 class 中设置主人,你必须明确地这样做。例如:
class Frm_btn(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self,parent, width=24, height=24, bg="green")
self.parent=parent