在网格管理器中使用带有Tkinter的输入框?

2024-03-28 18:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Tkinter制作一个基本的GUI,并使用网格管理器在我的标签旁边有一个输入框,但是如果我在entry对象中使用.Grid(),那么当我运行程序时,窗口就不会显示。在

当我使用.pack()时它确实起作用,这很奇怪,因为我听说在同一个小部件中有其他东西使用.grid()时,我不使用.pack()。我想用网格来组织,因为我想用它。在

代码如下,我在输入对象showName时遇到问题。被注释掉的.pack()语句是有效的,而.grid()语句是不起作用的语句。在

有人知道这是怎么回事吗?在

from Tkinter import *

class RenamerGUI():
    def __init__(self, master):
        frame = Frame(master)
        frame.pack() #Make frame visible

        self.exit = Button(frame, text = "Exit", fg = "red", command = frame.quit)

        self.csv2tsv = Button(frame, text = "csv2tsv", fg = "green", bg = "black", command=self.csv2tsv)
        self.epguidestsvFormatter = Button(frame, text = "epguidestsvFormatter", fg = "green", bg = "black", command = self.epguidestsvFormatter)
        self.epNamesList = Button(frame, text = "epNamesList", fg = "green", bg = "black", command = self.epNamesList)
        self.SeasonSplitter = Button(frame, text = "SeasonSplitter", fg = "green", bg = "black", command = self.SeasonSplitter)
        self.Renamer = Button(frame, text = "Renamer", fg = "green", bg = "black", command = self.Renamer)

        self.showLabel = Label(frame, text = "Show: ")

        self.showName = Entry(master)

        self.get = Button(frame, text = "Get", command = self.textgetter)


        self.exit.grid(row=3, column=4)
        self.csv2tsv.grid(row=1, column = 0)
        self.epguidestsvFormatter.grid(row=1, column=1)
        self.epNamesList.grid(row=1, column=2)
        self.SeasonSplitter.grid(row=1, column=3)
        self.Renamer.grid(row=1, column=4)
        self.showLabel.grid(row=2)
        self.showName.grid(row=2, column=1)
        #self.showName.pack(side=BOTTOM)

Tags: textselfcolumnbuttongreenframecommandpack