首页 > 解决方案 > 在 tkinter 中调整笔记本选项卡的大小

问题描述

如何在 Tkinter 中调整笔记本标签的大小?最初,我在根目录中创建了 4 个框架,并且能够使用 rowconfigure 和 columnconfigure 调整大小。现在我创建了两个选项卡并在其中一个选项卡内移动了 4 个框架,但问题是行配置和列配置现在没有动态调整四个框架的大小。

由于它在我的根目录下运行良好,因此我认为我在使用选项卡时遇到了问题。如果有人能指出为什么这不起作用以及解决方案是什么,将不胜感激。

代码片段:

tabControl=ttk.Notebook(master)
tab1 = Frame(tabControl)
tab2 = Frame(tabControl)
tabControl.add(tab1, text='Tab 1')
tabControl.add(tab2, text='Tab 2')
tab1.grid_columnconfigure(0,weight=1)
tab1.grid_columnconfigure(1,weight=1)
tab1.grid_rowconfigure(1,weight=1)
tab1.grid_rowconfigure(0,weight=1)
    
tabControl.grid()

标签: pythontkinter

解决方案


你正在寻找的是tab.columnconfigure()tab.rowconfigure()

尝试这个:

from tkinter import *
from tkinter import ttk

root = Tk()

tabControl = ttk.Notebook(root) 
  
tab1 = ttk.Frame(tabControl) 
tab2 = ttk.Frame(tabControl) 
  
tabControl.add(tab1, text ='Tab 1') 
tabControl.add(tab2, text ='Tab 2') 
tabControl.pack(expand = 1, fill ="both")

tab1.columnconfigure( (0,1), weight=1)
tab1.rowconfigure((0,1), weight=1)

lbl1 = Label(tab1, text='This is frame 1')
lbl2 = Label(tab1, text='This is frame 2')
lbl3 = Label(tab1, text='This is frame 3')
lbl4 = Label(tab1, text='This is frame 4')

lbl1.grid(row=0, column=0)
lbl2.grid(row=0, column=1)
lbl3.grid(row=1, column=0)
lbl4.grid(row=1, column=1)


root.mainloop()

更新:使用网格放置 tabControl。

from tkinter import *
from tkinter import ttk

root = Tk()

tabControl = ttk.Notebook(root) 
  
tab1 = ttk.Frame(tabControl) 
tab2 = ttk.Frame(tabControl)

Grid.columnconfigure(root, 0, weight=1)
Grid.rowconfigure(root, 0, weight=1)
  
tabControl.add(tab1, text ='Tab 1') 
tabControl.add(tab2, text ='Tab 2')
tabControl.grid(row=0, column=0, sticky='nsew')


tab1.columnconfigure( (0,1), weight=1)
tab1.rowconfigure((0,1), weight=1)

lbl1 = Label(tab1, text='This is frame 1')
lbl2 = Label(tab1, text='This is frame 2')
lbl3 = Label(tab1, text='This is frame 3')
lbl4 = Label(tab1, text='This is frame 4')

lbl1.grid(row=0, column=0)
lbl2.grid(row=0, column=1)
lbl3.grid(row=1, column=0)
lbl4.grid(row=1, column=1)


root.mainloop()

推荐阅读