Python 2.7 按钮和条目标签未显示在其实际显示的位置
如果我删除了entry小部件,一切都会调整得很好,但是在添加entry小部件之后,一切都会变得混乱。我使用的是栅格几何体管理器,我已经指定了输入框的位置,但它仍然没有正确显示Python 2.7 按钮和条目标签未显示在其实际显示的位置,python-2.7,tkinter,Python 2.7,Tkinter,如果我删除了entry小部件,一切都会调整得很好,但是在添加entry小部件之后,一切都会变得混乱。我使用的是栅格几何体管理器,我已经指定了输入框的位置,但它仍然没有正确显示 from Tkinter import* root=Tk() root.title("Calculator") def calculate(): print x def callback(x): print x Entry(root).grid(row=0) Button(root,text="0",com
from Tkinter import*
root=Tk()
root.title("Calculator")
def calculate():
print x
def callback(x):
print x
Entry(root).grid(row=0)
Button(root,text="0",command=lambda:callback(0)).grid(row=4,column=1)
Button(root,text="1",command=lambda:callback(1)).grid(row=1,column=0)
Button(root,text="2",command=lambda:callback(2)).grid(row=1,column=1)
Button(root,text="3",command=lambda:callback(3)).grid(row=1,column=2)
Button(root,text="4",command=lambda:callback(4)).grid(row=2,column=0)
Button(root,text="5",command=lambda:callback(5)).grid(row=2,column=1)
Button(root,text="6",command=lambda:callback(6)).grid(row=2,column=2)
Button(root,text="7",command=lambda:callback(7)).grid(row=3,column=0)
Button(root,text="8",command=lambda:callback(8)).grid(row=3,column=1)
Button(root,text="9",command=lambda:callback(9)).grid(row=3,column=2)
Button(root,text="+",command=lambda:callback(12)).grid(row=1,column=3)
Button(root,text="-",command=lambda:callback(13)).grid(row=2,column=3)
Button(root,text="*",command=lambda:callback(14)).grid(row=3,column=3)
Button(root,text="/",command=lambda:callback(15)).grid(row=4,column=3)
Button(root,text="=",command=calculate).grid(row=4,column=2)
Button(root,text=".",command=lambda:callback(11)).grid(row=4,column=0)
root.mainloop()
它是网格-当您在列中添加
条目
时,同一列中的其他单元格具有相同的宽度。您可以使用columnspan为条目使用更多列
tk.Entry(root).grid(row=0, columnspan=4)
您可以使用sticky='we'
将按钮调整为单元格宽度
import Tkinter as tk
# --- functions ---
def calculate():
print x
def callback(x):
print x
# --- main ---
root = tk.Tk()
root.title("Calculator")
tk.Entry(root).grid(row=0, columnspan=4)
tk.Button(root, text="0", command=lambda:callback(0)).grid(row=4, column=1, sticky='we')
tk.Button(root, text="1", command=lambda:callback(1)).grid(row=1, column=0, sticky='we')
tk.Button(root, text="2", command=lambda:callback(2)).grid(row=1, column=1, sticky='we')
tk.Button(root, text="3", command=lambda:callback(3)).grid(row=1, column=2, sticky='we')
tk.Button(root, text="4", command=lambda:callback(4)).grid(row=2, column=0, sticky='we')
tk.Button(root, text="5", command=lambda:callback(5)).grid(row=2, column=1, sticky='we')
tk.Button(root, text="6", command=lambda:callback(6)).grid(row=2, column=2, sticky='we')
tk.Button(root, text="7", command=lambda:callback(7)).grid(row=3, column=0, sticky='we')
tk.Button(root, text="8", command=lambda:callback(8)).grid(row=3, column=1, sticky='we')
tk.Button(root, text="9", command=lambda:callback(9)).grid(row=3, column=2, sticky='we')
tk.Button(root, text="+", command=lambda:callback(12)).grid(row=1, column=3, sticky='we')
tk.Button(root, text="-", command=lambda:callback(13)).grid(row=2, column=3, sticky='we')
tk.Button(root, text="*", command=lambda:callback(14)).grid(row=3, column=3, sticky='we')
tk.Button(root, text="/", command=lambda:callback(15)).grid(row=4, column=3, sticky='we')
tk.Button(root, text="=", command=calculate).grid(row=4, column=2, sticky='we')
tk.Button(root, text=".", command=lambda:callback(11)).grid(row=4, column=0, sticky='we')
root.mainloop()
编辑:更短
import Tkinter as tk
# --- functions ---
def callback(x):
print x
# --- main ---
buttons = [
("1", "2", "3", "+"),
("4", "5", "6", "-"),
("7", "8", "9", "*"),
(".", "0", "=", "/"),
]
root = tk.Tk()
root.title("Calculator")
tk.Entry(root).grid(row=0, columnspan=4)
for r, row in enumerate(buttons, 1):
for c, text in enumerate(row):
b = tk.Button(root, text=text, command=lambda arg=text:callback(arg))
b.grid(row=r, column=c, sticky='we')
root.mainloop()
它是网格-当您在列中添加条目
时,同一列中的其他单元格具有相同的宽度。您可以使用columnspan为条目使用更多列
tk.Entry(root).grid(row=0, columnspan=4)
您可以使用sticky='we'
将按钮调整为单元格宽度
import Tkinter as tk
# --- functions ---
def calculate():
print x
def callback(x):
print x
# --- main ---
root = tk.Tk()
root.title("Calculator")
tk.Entry(root).grid(row=0, columnspan=4)
tk.Button(root, text="0", command=lambda:callback(0)).grid(row=4, column=1, sticky='we')
tk.Button(root, text="1", command=lambda:callback(1)).grid(row=1, column=0, sticky='we')
tk.Button(root, text="2", command=lambda:callback(2)).grid(row=1, column=1, sticky='we')
tk.Button(root, text="3", command=lambda:callback(3)).grid(row=1, column=2, sticky='we')
tk.Button(root, text="4", command=lambda:callback(4)).grid(row=2, column=0, sticky='we')
tk.Button(root, text="5", command=lambda:callback(5)).grid(row=2, column=1, sticky='we')
tk.Button(root, text="6", command=lambda:callback(6)).grid(row=2, column=2, sticky='we')
tk.Button(root, text="7", command=lambda:callback(7)).grid(row=3, column=0, sticky='we')
tk.Button(root, text="8", command=lambda:callback(8)).grid(row=3, column=1, sticky='we')
tk.Button(root, text="9", command=lambda:callback(9)).grid(row=3, column=2, sticky='we')
tk.Button(root, text="+", command=lambda:callback(12)).grid(row=1, column=3, sticky='we')
tk.Button(root, text="-", command=lambda:callback(13)).grid(row=2, column=3, sticky='we')
tk.Button(root, text="*", command=lambda:callback(14)).grid(row=3, column=3, sticky='we')
tk.Button(root, text="/", command=lambda:callback(15)).grid(row=4, column=3, sticky='we')
tk.Button(root, text="=", command=calculate).grid(row=4, column=2, sticky='we')
tk.Button(root, text=".", command=lambda:callback(11)).grid(row=4, column=0, sticky='we')
root.mainloop()
编辑:更短
import Tkinter as tk
# --- functions ---
def callback(x):
print x
# --- main ---
buttons = [
("1", "2", "3", "+"),
("4", "5", "6", "-"),
("7", "8", "9", "*"),
(".", "0", "=", "/"),
]
root = tk.Tk()
root.title("Calculator")
tk.Entry(root).grid(row=0, columnspan=4)
for r, row in enumerate(buttons, 1):
for c, text in enumerate(row):
b = tk.Button(root, text=text, command=lambda arg=text:callback(arg))
b.grid(row=r, column=c, sticky='we')
root.mainloop()
当您输入条目时,同一列中的所有单元格都具有相同的宽度。使用columnspan
以便条目使用更多的列-即Entry(root).grid(row=0,columnspan=4)
。或者使用Frame
和pack
来组织元素。当您放入entry
时,同一列中的所有单元格都具有相同的宽度。使用columnspan
以便条目使用更多的列-即Entry(root).grid(row=0,columnspan=4)
。或者用Frame
和pack
来组织元素。你能给我解释一下这两行吗?对于r,枚举中的行(按钮,1):对于c,枚举中的文本(行):感谢您的帮助,我自己解决了它!:)你能给我解释一下这两行吗?对于r,枚举中的行(按钮,1):对于c,枚举中的文本(行):感谢您的帮助,我自己解决了它!:)