2017-04-03 4 views
1

Ich habe versucht this, aber es hat nicht geholfen.Wie tkinter Button-Widget machen volle Breite des Rasters nehmen

Ich mache ein Taschenrechner-Programm. Ich habe das bisher gemacht:

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() 

wie dies Das sieht (mein Ruf zu niedrig ist, Bilder zu veröffentlichen): https://i.imgsafe.org/268d2a57c1.jpg

Ich mag die Boxen gleich breit sein und den verfügbaren Raum füllen . Das Ergebnis sollte ähnlich wie folgt aussehen: http://python.6.x6.nabble.com/file/n4545517/skaiciavke.png

Wie machen Sie eine Schaltfläche nehmen Sie die gesamte Breite der Zeile/Spalte?

Antwort

3

Zwei Dinge:

  1. Sie setzen Ihr Eingabefeld von Spalte 0 ab, anzuwenden, aber dann jeder nachfolgende Reihe arbeitet von Spalte 1 ab. Seien Sie dabei konsistent - Ihre Taste für 7 sollte in Spalte 0, 8 in 1 usw. sein.
  2. Wenn Sie .grid Ihre Tasten verwenden, verwenden Sie sticky=N+S+E+W. Dadurch können die Schaltflächen mit ihren jeweiligen Zeilen- und Spaltengrößen erweitert werden.

Zum Beispiel:

#!/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() 

gibt ein Fenster, das wie folgt aussieht:

Tkinter buttons with sticky

+0

Das funktioniert gut. Vielen Dank. – Henry

Verwandte Themen