Fra*_*sco 0 python grid tkinter frame
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();
Run Code Online (Sandbox Code Playgroud)
代码看起来不错,但框架不适合指示的dedida,但如果你这样做,请在下面的代码中
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()
Run Code Online (Sandbox Code Playgroud)
我未能使第一个代码不起作用的宽度和高度
我不知道你想做什么。代码中有几处看起来是错误的。第一个问题是,正如问题中所写,它根本不运行。您缺少导入语句并且缩进混乱。
在第一个示例中,您为框架指定了宽度和高度。但是,框架的默认行为是自动调整大小以适合其所有子项。这称为几何传播。因此,框架将缩小到刚好足以容纳入口小部件。
如果您希望框架保持 200 像素宽 x 200 像素高,您需要关闭几何传播。您可以使用以下方法执行此操作:
self.f.grid_propagate(False)
Run Code Online (Sandbox Code Playgroud)
这很少是推荐的做事方式,但如果您真的希望框架恰好是某个特定尺寸,这是一种方法。
如果您不希望它是精确大小,而是希望它填满整个窗口,则需要使用命令中的sticky选项grid,并为第 0 行和第 0 列设置非零权重。例如:
def frame(self):
self.f = Tkinter.Frame(self,width=200,height=200,bg='cyan');
self.f.grid(row=0,column=0, sticky="nsew");
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15349 次 |
| 最近记录: |