Python 空Tkinter窗口
我正在做一些基本的Tkinter代码,当我启动时,我没有得到任何错误,但是我的窗口是空的,尽管我已经添加了一些东西到它们中。我在这里看到了这个问题,但这对我并没有帮助,因为我有它说的事情要做Python 空Tkinter窗口,python,tkinter,Python,Tkinter,我正在做一些基本的Tkinter代码,当我启动时,我没有得到任何错误,但是我的窗口是空的,尽管我已经添加了一些东西到它们中。我在这里看到了这个问题,但这对我并没有帮助,因为我有它说的事情要做 from tkinter import * class App: def __init__(self,master): frame = Frame(master) frame.pack self.sg = Button(frame, text = "Study Guide",
from tkinter import *
class App:
def __init__(self,master):
frame = Frame(master)
frame.pack
self.sg = Button(frame, text = "Study Guide", command = self.studyGuide)
self.sg.grid(row = 2, column = 1)
self.sg.pack()
self.quizlet = Button(frame, text = "Quizlet", command = self.quizlet)
self.quizlet.grid(row = 2, column = 2)
self.quizlet.pack()
self.flashcard = Button(frame, text = "Flash Cards", command = self.flashcard)
self.flashcard.grid(row = 2, column = 3)
self.flashcard.pack()
self.quitButton = Button(frame, text = "Quit", command = frame.quit)
self.quitButton.grid(row = 3, column = 2)
self.quitButton.pack()
self.text = Label(frame, text = "Social Studies Study Tool")
self.text.grid(row = 1, column = 2)
self.text.pack()
def studyGuide(self):
print("Study Guide")
def quizlet(self):
print("Quizlet")
def flashcard(self):
print("Flashcards")
root = Tk()
app = App(root)
root.mainloop()
首先,对于您为其调用
grid
的每个元素,不要调用pack
。你只需要使用其中一个。第二:
frame = Frame(master)
frame.pack
您似乎缺少一个括号
frame = Frame(master)
frame.pack()
不要混淆布局管理器!使用
pack()
或grid()
,但不能同时使用两者
如果使用pack
,请添加要打包项目的侧:
frame.pack() # note the missing () in your code
...
self.sg.pack(side=TOP)
如果使用grid()
,请在代码顶部添加frame.grid()
:
frame.grid()
...
self.sg.grid(row = 2, column = 1)
“当我启动时,没有错误。”你没有?当我运行此程序时,我得到\u tkinter.TclError:无法在.6242576中使用几何管理器网格,该网格已经有由pack管理的从属程序。这是你的密码吗?顺便问一下,为什么要使用网格
和包
?你只能使用一个。@SpaceMagnet下面的答案解决了你的问题吗?如果是这样的话,如果你能接受其中一个来标记问题已经解决,那就太好了。通常,您会同时使用pack和grid,只是不在同一个父级中,也不使用OP的方式。实际上,在应用程序中同时使用这两种方法是最好的做法,因为它们解决的问题略有不同。两者都不是真正的“一刀切”解决方案。@BryanOakley绝对正确!所以,不要把它放在同一个容器里。谢谢你的澄清!