Sto imparando Tkinter e sto costruendo un semplice gioco di 8 puzzle.
(Esempio: http://www.permadi.com/java/puzzle8/)Edizione di Python Tkinter padding
Ogni numero è un oggetto Canvas inserito in una cornice utilizzando un layout di griglia. Uno degli oggetti sta aggiungendo una spaziatura extra tra gli oggetti Canvas. Ho impostato la larghezza del bordo sugli oggetti Canvas su -2, che ha risolto il problema di alcune persone, ma questo ha ridotto solo leggermente il riempimento extra per me. L'impostazione di questo valore su -4 inizia a tagliare nell'area di disegno.
Suppongo che le celle del layout della griglia abbiano un riempimento o una larghezza del bordo di default, ma non ho trovato un modo per rimuoverlo. L'impostazione dei valori padx, pady, ipadx, ipady quando si chiama grid() sugli oggetti Canvas non sembra essere di aiuto.
Un'altra stranezza che ho trovato è stato quando facendo un bordo per i miei oggetti di tela che ho usato create_rectangle, ma ho dovuto iniziare x_1 e y_1 a 4,4 invece di 0,0 o 2,2 che è quello che ci si aspetterebbe per un Confine 2px.
Ecco il mio codice. Qualsiasi aiuto/consiglio/soluzione alternativa/altrimenti è molto apprezzato.
#!/usr/bin/python
from Tkinter import *
class Number(Canvas):
def __init__(self, master=None, number=1):
Canvas.__init__(self, master, width=100, height=100, bd=-2)
self.create_text(50, 50, text=str(number), anchor=CENTER)
self.create_rectangle(4, 4, 98, 98, width=2)
class Application(Frame):
def create_widgets(self):
self.playarea = Frame(self, width=300, height=300)
self.playarea.grid_propagate(0)
self.playarea.grid()
self.playarea.numbers = []
for number in xrange(1, 10):
num_obj = Number(self.playarea, number)
self.playarea.numbers.append(num_obj)
row = number // 3
col = number % 3
num_obj.grid(row=row, column=col)
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def main():
app = Application()
app.master.title("Sample Application")
app.mainloop()
if __name__ == '__main__':
main()
highlightthickness era il colpevole. Grazie per l'aiuto! Anche il trucco di base ha funzionato a meraviglia. – zrbecker
+10 per "Assegnare a ciascun widget un diverso colore di sfondo". L'ho usato prima per un problema di layout complicato ma l'ho dimenticato fino a quando non l'hai menzionato. –