我无法像图片那样按行或列打包小部件,你能帮我吗?
问题是文本小部件变形了列大小,文本不应该在 row=3,column=0 中?
def _formato(self):
t1=tkinter.Toplevel(self._finestra)
labelTop = tkinter.Label(t1,text = "Tipo di carattere")
labelTop.grid(row=0, column=0)
labelTop2 = tkinter.Label(t1,text = "Dimensione")
labelTop2.grid(row=0, column=1)
labelTop3 = tkinter.Label(t1)
labelTop3.grid(row=2, column=0)
listaFont=tkinter.ttk.Combobox(t1)
allfonts = sorted(tkinter.font.families())
listaFont["values"] = allfonts
listaFont.grid(row=1, column=0)
listaFont.bind("<<ComboboxSelected>>", None)
listaDimensione = tkinter.ttk.Combobox(t1)
allfontsizes = list(range(8,70))
listaDimensione['values'] = allfontsizes
listaDimensione.grid(row=1, column=1)
testo= tkinter.Text(t1)
testo.insert(tkinter.INSERT,'AaBbYyZz')
testo.grid(row=3,column=0)
最佳答案
Question: All widgets in the same
column
should have equalwidth
.
核心是,为每一列使用一个Frame
,并将小部件布局到Frame
中。
这允许所有小部件调整到 Frame width
。
定义
类 App
用于演示目的class App(tk.Tk): def __init__(self): super().__init__()
要获得相等的
宽度
,请为每一列使用一个tk.Frame
。
允许Frame
增加他的宽度
。
允许Frame
内的小部件增加他的宽度
。
定义Frame
以适应App 宽度
。# column 0 self.grid_columnconfigure(0, weight=1) frame_0 = tk.Frame(self) frame_0.grid_columnconfigure(0, weight=1) frame_0.grid(row=0, column=0, sticky='nsew')
添加小部件...
定义每个小部件,使其width
增加到Frame width
。labelTop = tkinter.Label(frame_0, text="Tipo di carattere") labelTop.grid(row=0, column=0, sticky='ew') listaFont = tkinter.ttk.Combobox(frame_0) listaFont.grid(row=1, column=0, sticky='ew') allfonts = sorted(tkinter.font.families()) listaFont["values"] = allfonts listaFont.bind("<<ComboboxSelected>>", None)
注意:使用
重置默认值width=1
testo = tkinter.Text(frame_0, width=1) testo.insert(tkinter.INSERT, 'AaBbYyZz') testo.grid(row=3, column=0, sticky='ew')
第 1 列相同 ...
# column 1 self.grid_columnconfigure(1, weight=1) frame_1 = tk.Frame(self) frame_1.grid_columnconfigure(0, weight=1) frame_1.grid(row=0, column=1, sticky='nsew') labelTop2 = tkinter.Label(frame_1, text="Dimensione") labelTop2.grid(row=0, column=0, sticky='ew') listaDimensione = tkinter.ttk.Combobox(frame_1) allfontsizes = list(range(8, 70)) listaDimensione['values'] = allfontsizes listaDimensione.grid(row=1, column=0, sticky='ew')
Usage:
if __name__ == "__main__":
App().mainloop()
使用 Python 测试:3.5
关于python - Tkinter 文本小部件变形列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959968/