Python Tkinter文本小部件使列大小变形
我不能像图中那样将小部件按行或列打包,你能帮我吗 问题是文本小部件使列大小变形,文本不应该在第3行,第0列Python Tkinter文本小部件使列大小变形,python,python-3.x,tkinter,widget,Python,Python 3.x,Tkinter,Widget,我不能像图中那样将小部件按行或列打包,你能帮我吗 问题是文本小部件使列大小变形,文本不应该在第3行,第0列 def格式(自): t1=tkinter.Toplevel(自寻优) labelTop=tkinter.Label(t1,text=“Tipo di carattere”) labelTop.grid(行=0,列=0) labelTop2=tkinter.Label(t1,text=“Dimensione”) labelTop2.grid(行=0,列=1) labelTop3=tkin
def格式(自):
t1=tkinter.Toplevel(自寻优)
labelTop=tkinter.Label(t1,text=“Tipo di carattere”)
labelTop.grid(行=0,列=0)
labelTop2=tkinter.Label(t1,text=“Dimensione”)
labelTop2.grid(行=0,列=1)
labelTop3=tkinter.Label(t1)
labelTop3.grid(行=2,列=0)
listaFont=tkinter.ttk.Combobox(t1)
allfonts=已排序(tkinter.font.families())
listaFont[“值”]=所有字体
listaFont.grid(行=1,列=0)
listaFont.bind(“,无)
listaDimensione=tkinter.ttk.Combobox(t1)
allfontsizes=列表(范围(8,70))
listaDimensione['values']=allfontsizes
listaDimensione.grid(行=1,列=1)
testo=tkinter.Text(t1)
testo.insert(tkinter.insert,'aabbyyz')
testo.grid(行=3,列=0)
问题:同一列中的所有小部件的宽度应相等
# 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')
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)
核心是,对每一列使用框架
,并将小部件布局到框架
这允许所有窗口小部件调整到帧宽度
定义类应用程序
,用于演示
class App(tk.Tk):
def __init__(self):
super().__init__()
要获得相等的宽度
请为每列使用tk.Frame
。
允许帧
增大其宽度
允许框架内的小部件
增加其宽度
定义帧
以增大到应用程序宽度
# 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')
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)
添加小部件…
定义每个小部件以将其宽度
增加到帧宽度
# 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')
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)
科伦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')
用法:
用Python测试:3.5阅读能否请您添加一些详细信息您正在尝试实现什么,什么工作,什么不工作?@Jere:OP希望以网格的方式布局小部件,但使用包,没有选项。@stovfl我昨天不清楚。问题是文本小部件使列大小变形。我可以改变它的宽度,但它不准确…@stovfl是的。现在我通过修改文本的宽度来解决这个问题,为什么在文本上使用width=1?testo=tkinter.Text(frame_0,width=1)@antonio:Text
小部件贪婪于width/height
,它用hughwidth
实例化。这是一种解决方法,可以强制宽度
遵守帧宽度
@antonio“将帧放置在顶级中?”:同样,更改为类应用程序(tk.toplevel):
并在\uu main\uu
中首先执行root=tk.tk()
。默认情况下使用root
。只是有一个问题,我将文本小部件的高度设置为3,当我增加字体大小时,它的高度会增加…@antonio:Read about