递归调用tkinter小部件只显示两次

时间:2015-09-26 12:08:05

标签: python python-3.x tkinter

我一直在为STO(星际迷航在线)铸造任务的作者制作一个程序。基本上我正在制作一个显示对话树的程序。

通过我的功能工作中途(我后来担心美学)我发现我只能在添加回复对话框时调用小部件。如果我想创建一个回复回复(第三级)它根本不会显示,但我没有错误。

Screenshot of max vertical

这是我的代码:

import tkinter as tk
from tkinter import ttk
class Dialog(ttk.Frame):
    def __init__(self,master=None):
        ttk.Frame.__init__(self,master)
        self.widgets()
        self.grid()
        self.button_num=0
    def widgets(self):
        self.charname=tk.Label(self,text="Contact")
        self.charname.grid(row=0,column=0)
        self.char=ttk.Entry(self)
        self.char.grid(row=0,column=1)
        self.animname=tk.Label(self,text="Animation")
        self.animname.grid(row=1,column=0)
        self.anim=ttk.Entry(self)
        self.anim.grid(row=1,column=1)
        self.msgname=tk.Label(self,text="Dialog")
        self.msgname.grid(row=2,column=0)
        self.msg=tk.Text(self,font="Arial 8",width=20,height=5)
        self.msg.grid(row=2,column=1)
        self.add=ttk.Button(self,text="Add Button",command=self.add_output).grid(row=3,column=0)
        self.resp=ttk.Entry()
        self.arr=ttk.Label(text=""" |
 |
\/""")
    def add_output(self):
        self.resp.grid(column=self.button_num,row=4)
        self.arr.grid(column=self.button_num,row=5)
        dialog=Dialog()
        dialog.grid(column=self.button_num,row=6)
        self.button_num+=1

class Application(ttk.Frame):
    def __init__(self,master=None):
        ttk.Frame.__init__(self,master)
        self.widgets()
        self.grid()
    def widgets(self):
        Dialog()
Application(master=tk.Tk()).mainloop().title("FoundryPADD 0.1.0")

1 个答案:

答案 0 :(得分:0)

您的add_output函数始终将事物放在同一行,因此它们只显示在同一行的前一项上。您需要跟踪您拥有的行数,并适当增加行。