2017-04-03 61 views
1

我试过this但它没有帮助。如何使tkinter按钮小部件占用全部网格的宽度

我正在制作一个计算器程序。我到目前为止做出这样的:

from tkinter import * 
window = Tk() 

disp = Entry(window, state='readonly', readonlybackground="white") 
disp.grid(column=0, row=0, columnspan=4) 
#row 1 
seven = Button(window, text="7", command=Seven) 
seven.grid(column=1,row=1) 

eight = Button(window, text="8", command=Eight) 
eight.grid(column=2,row=1) 

nine = Button(window, text="9", command=Nine) 
nine.grid(column=3,row=1) 

divide = Button(window, text="÷", command=Divide) 
divide.grid(column=4,row=1) 

#row 2 

four = Button(window, text="4", command=Four) 
four.grid(column=1,row=2) 

five = Button(window, text="5", command=Five) 
five.grid(column=2,row=2) 

six = Button(window, text="6", command=Six) 
six.grid(column=3,row=2) 

multiply = Button(window, text="×", command=Multiply) 
multiply.grid(column=4,row=2) 

#row 3 

one = Button(window, text="1", command=One) 
one.grid(column=1,row=3) 

two = Button(window, text="2", command=Two) 
two.grid(column=2,row=3) 

three = Button(window, text="3", command=Three) 
three.grid(column=3,row=3) 

minus = Button(window, text="-", command=Minus) 
minus.grid(column=4,row=3) 

#row 4 

zero = Button(window, text="0", command=Zero) 
zero.grid(column=1,row=4) 

dec = Button(window, text=".", command=Dec) 
dec.grid(column=2,row=4) 

equal = Button(window, text="=", command=Equal) 
equal.grid(column=3,row=4) 

add = Button(window, text="+", command=Add) 
add.grid(column=4,row=4) 

window.mainloop() 

这看起来是这样的(我的名声太低张贴图片):https://i.imgsafe.org/268d2a57c1.jpg

我想箱子是同样宽,填充可用空间。 结果应该看起来像这样:http://python.6.x6.nabble.com/file/n4545517/skaiciavke.png

你如何使一个按钮占据行/列的整个宽度?

回答

3

两件事情:

  1. 您可以设置您的输入框,从0列开始申请,但随后后续的每一行从开始第1列运行。在这一点是一致的 - 你的按钮为7应在0列,8在1等
  2. 当你.grid你的按钮,使用sticky=N+S+E+W。这将允许按钮以其各自的行和列大小进行扩展。

例如:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

from tkinter import * 
window = Tk() 

disp = Entry(window, state='readonly', readonlybackground="white") 
disp.grid(column=0, row=0, columnspan=4) 
#row 1 
seven = Button(window, text="7") 
seven.grid(column=0,row=1, sticky=N+S+E+W) 

eight = Button(window, text="8") 
eight.grid(column=1,row=1, sticky=N+S+E+W) 

nine = Button(window, text="9") 
nine.grid(column=2,row=1, sticky=N+S+E+W) 

divide = Button(window, text="÷") 
divide.grid(column=3,row=1, sticky=N+S+E+W) 

window.mainloop() 

返回,看起来像窗口:

Tkinter buttons with sticky

+0

那伟大工程。谢谢。 – Henry