类内部的Python Tkinter网格

时间:2018-09-28 14:53:56

标签: python object recursion tkinter grid

因此,我在尝试将网格框架放置在另一个网格框架中时遇到了这个问题。我能够在其他程序中实现它。但是由于某种原因,我无法在此处复制此内容。我认为可能是因为我正在处理对象。实际上,我确实需要使用对象,因为我想使用递归,以便您生成不同的页面。

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”框架中的子按钮置于“左”和“右”按钮的中间。看起来好像刚出现在左上角。

1 个答案:

答案 0 :(得分:0)

您正在将gridFrame设置为None,因此“中间”按钮将在根窗口中显示。