因此,我在尝试将网格框架放置在另一个网格框架中时遇到了这个问题。我能够在其他程序中实现它。但是由于某种原因,我无法在此处复制此内容。我认为可能是因为我正在处理对象。实际上,我确实需要使用对象,因为我想使用递归,以便您生成不同的页面。
import tkinter as tk
import json
class Panel:
panelType='F'
panelHome=False
def __init__(self,parent,payload):
self.parent = parent
self.payload= payload
if(payload["name"]=="home"):
self.panelHome=True
self.panelType='G'
else:
if(payload["list"]=='G'):
self.panelType='G'
elif(payload["list"]=='L'):
self.panelType='L'
self.boundaries()
self.printPage(0)
def boundaries(self):
if(self.panelType=='G'):
print("This is a grid")
elif(self.panelType=='L'):
print("This is a list")
def printPage(self,page):
print("printing page"+str(page))
useHeight= window.winfo_reqheight()
useWidth= window.winfo_reqwidth()
if(self.panelHome==True):
tk.Button(self.parent,text="Settings").grid(row=0,column=2,padx=20,pady=20)
else:
tk.Button(self.parent,text="Back").grid(row=0,column=0,padx=12,pady=12)
tk.Button(self.parent,text="Home").grid(row=0,column=1,padx=12,pady=12)
if(self.panelType=='G'):
tk.Button(self.parent,text="Left").grid(row=1,column=0,padx=12,pady=12)
tk.Button(self.parent,text="Right").grid(row=1,column=2,padx=12,pady=12)
gridFrame= tk.Frame(self.parent).grid(row=1,column=1)
i=0
tk.Button(gridFrame,text="middle").grid(row=0,column=0)
# for eachI in self.payload['objects']:
# tk.Button(gridFrame,text=eachI['name']).grid(row=0,column=i,padx=12,pady=12)
# i+=1
print("grid")
home = {
"name":"home",
"objects":[
{"name":"one","object":"go"} ,
{"name":"two","object":"go"} ,
{"name":"three","object":"go"} ,
{"name":"four","object":"go"}
]
}
window = tk.Tk()
window.title("PyPanels")
window.geometry("550x500")
panelTree = Panel(window,home)
window.mainloop()
我要完成的是将“中间”按钮和所有放置在“ gridFrame”框架中的子按钮置于“左”和“右”按钮的中间。看起来好像刚出现在左上角。
答案 0 :(得分:0)
您正在将gridFrame
设置为None
,因此“中间”按钮将在根窗口中显示。