2017-04-03 59 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