Python Tkinter文本小部件使列大小变形

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

我不能像图中那样将小部件按行或列打包,你能帮我吗

问题是文本小部件使列大小变形,文本不应该在第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=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
    ,它用hugh
    width
    实例化。这是一种解决方法,可以强制
    宽度
    遵守
    帧宽度
    @antonio“将帧放置在顶级中?”:同样,更改为
    类应用程序(tk.toplevel):
    并在
    \uu main\uu
    中首先执行
    root=tk.tk()
    。默认情况下使用
    root
    。只是有一个问题,我将文本小部件的高度设置为3,当我增加字体大小时,它的高度会增加…@antonio:Read about