2010-09-04 6 views
2

J'ai donc jusqu'à présent d'une simple fenêtre tkinter python et je suis d'ajouter du texte, des boutons, etc.Comment ajouter une marge à une fenêtre tkinter?

extrait:

class Cfrm(Frame): 

    def createWidgets(self): 

     self.text = Text(self, width=50, height=10) 
     self.text.insert('1.0', 'some text will be here') 
     self.text.tag_configure('big', font=('Verdana', 24, 'bold')) 


     self.text["state"] = "disabled" 
     self.text.grid(row=0, column=1) 

     self.quitw = Button(self) 
     self.quitw["text"] = "exit", 
     self.quitw["command"] = self.quit 
     self.quitw.grid(row=1, column=1) 


    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.createWidgets() 

le problème est, je veux avoir environ 15-20 px marge autour de la fenêtre, j'ai regardé partout, et je ne pouvais pas trouver une solution. Aussi

self.text.tag_configure('big', font=('Verdana', 24, 'bold')) 

ne fonctionne pas. Des solutions possibles?

Répondre

8

Ok, voici la solution que je trouve la question 1:

self.grid(padx=20, pady=20) 

Suppression .text semble changer tout le cadre. Je n'ai toujours pas résolu le problème 2.

5

Utilisez les options de pavé (padx, pady, ipadx, ipady) pour que la commande grid ajoute un remplissage autour du widget de texte. Par exemple:

self.text.grid(row=0, column=1, padx=20, pady=20) 

Si vous voulez un rembourrage autour de l'interface graphique tout, ajouter le remplissage lorsque vous emballez le cadre de l'application:

self.pack(padx=20, pady=20) 

Lorsque vous prononcez la commande balise ne fonctionne pas, comment définissez-vous "ne fonctionne pas"? Avez-vous une erreur? Est-ce que la police est grande mais pas en gras, en gras mais pas grande, ...? La commande me va bien, et quand je la lance, ça marche bien.

Votre exemple ne montre pas que vous appliquez réellement cette balise à une plage de texte. Es-tu? Si c'est le cas, comment? Si vous faites ce qui suit, que se passe-t-il?

self.text.insert("1.0", 'is this bold?', 'big') 
+0

quand je fais: self.text.insert (1.0, '? Est ce gras', 'grand') absolument rien texte changes.The montre, mais pas gras padx, Pady fonctionne, le seul problème est qu'il ajoute un remplissage pour le widget, et pas toute la fenêtre, donc il y a maintenant de l'espace entre le texte et le bouton. Serait-il possible de faire quelque chose comme redimensionner la fenêtre par rapport à sa taille actuelle? –

+0

self.pack (padx ...) est super utile! – qed

1

Un moyen rapide de le faire est d'ajuster votre style de relief à plat, alors vous n'avez qu'à ajuster la largeur de votre bordure.

self.Border = Tkinter.Frame(self, relief='flat', borderwidth=4) 
+0

même chose que ma solution. –

Questions connexes