【问题标题】:treeview doesn't fit the frame树视图不适合框架
【发布时间】:2021-11-12 06:01:31
【问题描述】:

我尝试将树视图放入子框架,但它不适合框架。

class Application(Frame):
    def __init__(self,master=None):
        self.pipeLine =[]
        super().__init__(master)
        self.master = master
        self.PipeFrame = Frame(self.master,width=200,height=200).place(x=30,y=30)
        self.PipeLineFrame = Frame(self.PipeFrame,width=200,height=220,bg='white',).place(x=10,y=100)
        self.createPipeTree()
        self.createWidget()
        self.pack()
    def createPipeTree(self):
        self.PipeTree = ttk.Treeview(self.PipeLineFrame,column=("input","output"))
        self.PipeTree.column("#0",minwidth=25,width= 60)
        self.PipeTree.column("input",anchor=W,width=60)
        self.PipeTree.column("output",anchor=W,width=60)
        self.PipeTree.heading("#0",text="PipeLine")
        self.PipeTree.heading("input",text="input")
        self.PipeTree.heading("output",text="output")
        self.PipeTree.pack(side=LEFT,expand=True)
    def createWidget(self):
        self.addNode = Button(self.PipeFrame,text="click to add procedure into pipeline",command=self.addNode).place(x=10,y=20)
        self.inputBtn1 = Button(self.PipeFrame, text="F0").place(x=10,y=350)
        self.inputBtn2 = Button(self.PipeFrame, text="Mel" ).place(x=50, y=350)
        self.inputBtn3 = Button(self.PipeFrame, text="audio" ).place(x=100, y=350)
        self.inputBtn4 = Button(self.PipeFrame, text="text").place(x=150,y=350)
        self.inputBtn5 = Button(self.PipeFrame, text="f0").place(x=200, y=350)
    if __name__ == '__main__':
        root = Tk()
        root.geometry("800x400+200+300")
        root.title("HDI is the best")
        Application(master=root)
        root.mainloop()

PipeTree 应该适合 PipeLineFrame(白色区域),但目前,它像这样超出了框架。 current result

【问题讨论】:

    标签: python tkinter treeview


    【解决方案1】:

    当你布局一个小部件时,你可以像这样在 1 行中完成它:

    Widget(root).pack()
    

    或者你可以给它一个名字并使用这样的两行:

    name = Widget(root)
    name.pack()
    

    您不能将这两种方法结合起来并使用一行来命名。如果您尝试这样做,这就是您得到的错误。

    【讨论】:

    • 我把place函数分开了。它目前看起来像这样: self.PipeFrame = Frame(self.master,width=200,height=200) self.PipeFrame.place(x=30,y=30) 这解决了问题,但我不知道它是如何解决的修复它。如果您知道原因,介意解释一下吗?
    • 因为如果将它们组合起来,名称将成为 place() 方法的输出,即 None。如果您使用 None 作为主小部件,tkinter 默认为第一个根窗口。
    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多