我在Tkinter(使用Python 2.5.1)中看到的问题是,当我使用grid()方法添加元素时,它们堆叠在一起而不是创建一个新行。代码将运行,但小部件全部堆叠在应用程序中心的两行中。为什么会这样?
from Tkinter import *
import random
class Application(Frame):
"""Define Application's constructor"""
def __init__(self, master):
"""Initialize the Frame"""
Frame.__init__(self, master)
self.grid()
self.create_widgets()
#Create the widgets
def create_widgets(self):
self.lblTitle = Label(self, text="Build Your Own Burger")
self.lblTitle.grid(row=0)
self.lblBurgerImg = Label(self, image=PhotoImage(file="burger.gif"))
self.lblTitle.grid(row=1)
self.lblName = Label(self, text="Name:")
self.lblName.grid(row=2, column=0, columnspan=2, sticky=W)
self.entryName = Entry(self)
self.entryName.grid(row=2, column=1, columnspan=2, sticky=W)
self.lblToppings = Label(self, text = "Toppings:")
self.lblTitle.grid(row=3, column=0, sticky=W, columnspan=5, sticky=W)
self.chkCheese = Checkbutton(self, text="cheese")
self.chkCheese.grid(row=3, column=1, sticky=W, columnspan=5, sticky=W)
#main program
#create a root window
root = Tk()
#assign a title for the GUI
root.title("Order Up!")
#Define size of root window
root.geometry("700x700")
#create an instance of your application
app = Application(root)
#start the event loop
root.mainloop()
答案 0 :(得分:2)
首先,您某些此代码是否适合您?我在两行中两次使用sticky
选项时遇到错误。但是,这不是问题所在。
您认为发生的事情并不是实际发生的事情。小部件不是全部"堆叠在一起:两个是不可见的,因为你没有在它们上面调用grid
方法,并且只有标题堆叠在另一个小部件之上,因为这是你放置它的地方。
问题是您拨打self.lblTitle.grid(...)
三次。毫无疑问,这三次中有两次打算在其他小部件上调用grid
方法。