tkinter, grille et cadre non cadre de redimensionnement
class input_data(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self);
self.resizable(width=False,height=False);
self.geometry('500x500');
t = ['frame','input_text'];
for i in t:
eval('self.'+i+'()');
def frame(self):
self.f = Tkinter.Frame(self,width=200,height=200,bg='cyan');
self.f.grid(row=0,column=0);
def input_text(self):
self.e = Tkinter.Entry(self.f);
self.e.grid(row=0,column=0);
root = input_data();
root.mainloop();
le code a l'air bien, mais l'image ne correspond pas à celui indiqué dedida, mais dans le code ci-dessous si vous ne
import Tkinter as tk
class SimpleApp(object):
def __init__(self, master, **kwargs):
title = kwargs.pop('title')
frame = tk.Frame(master, borderwidth=5, bg = 'cyan', **kwargs)
frame.grid()
button = tk.Button(frame, text = title)
button.grid(sticky = tk.SE)
frame.rowconfigure('all', minsize = 200)
frame.columnconfigure('all', minsize = 200)
def basic():
root = tk.Tk()
app = SimpleApp(root, title = 'Hello, world')
root.mainloop()
basic()
où je ne suis pas à faire le premier code ne fonctionne pas la largeur et la hauteur
- Je ne sais pas quelles sont les causes de la question, mais je voudrais remplacer
t = ['frame, input_text']
avect = [self.frame, self.input_text]
et l'instruction eval aveci()
. En outre, vous n'avez pas besoin des points-virgules en python. Il est unpythonic. - Votre question est difficile à comprendre. Faire les deux exemples ne fonctionnent pas comme vous le souhaitez, ou seulement le premier?
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas ce que vous essayez de faire. Il y a plusieurs choses qui s'affichent mal dans le code. Le premier problème est que, comme écrit dans la question, il ne fonctionne pas du tout. Il vous manque une instruction d'importation et votre indentation est foiré.
Dans le premier exemple, vous donnez l'image d'une largeur et une hauteur. Cependant, le comportement par défaut pour les images est de redimensionner automatiquement pour s'adapter à tous ses enfants. Ceci est appelé géométrie de propagation Ainsi, l'image sera réduite à être juste assez grande pour contenir le widget de saisie.
Si vous voulez que le cadre de rester à 200 pixels de large sur 200 pixels de hauteur, vous devez activer la géométrie de propagation de l'arrêt. Vous faites cela avec quelque chose comme:
C'est rarement recommandé de faire les choses, mais si vous voulez vraiment l'image exactement sur certains aspects spécifiques de la taille, c'est une façon de le faire.
Si vous n'avez pas voulez qu'il soit de la taille exacte, mais, au contraire, veulent pour remplir la totalité de la fenêtre, vous devez utiliser le
sticky
option dans legrid
de commande, et de définir un non-poids à zéro de la ligne 0 et la colonne 0. Par exemple: