python ttk.notebook_python - ttk.Notebook每个选项卡上的不同网格大小 - 堆栈内存溢出...

我正在使用Tkinter创建一个GUI,并且已经使用ttk.Notebook()创建了多个选项卡。 在Tab1上有一些Labels和Entry框,在Tab2上有matplotlib图。 我专门使用网格布局管理器。

我遇到的问题是,当我将绘图放置在Tab2上(行= 0)时,它似乎也增加了Tab 1上第0行的大小,在2个标签之间创建了很多空间(应该彼此对上)。

(非常)下面是该代码的最低版本。 我想念什么? 如何独立控制每个选项卡上的行高,以便Tab2上的小部件不设置Tab1上的行高? 先谢谢您的帮助。

import tkinter as tk

from tkinter import ttk

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import matplotlib.pyplot as plt

import matplotlib

from matplotlib.figure import Figure

matplotlib.use("TkAgg")

class MainGUI(tk.Tk):

def __init__(self):

tk.Tk.__init__(self)

self.title('Title')

self.geometry('750x500')

# Adds tabs to main window

self.nb = ttk.Notebook(self)

self.nb.grid(row=0, column=0, columnspan=5, rowspan=4, sticky='NESW')

self.tab1 = ttk.Frame(self.nb)

self.nb.add(self.tab1, text='Tab1')

self.tab2 = ttk.Frame(self.nb)

self.nb.add(self.tab2, text='Tab2')

# defines a grid 10 x 5 cells in the main window & tabs

rows = 0

cols = 0

while rows < 10:

while cols < 5:

self.rowconfigure(rows, weight=1)

self.columnconfigure(cols, weight=1)

self.tab1.rowconfigure(rows, weight=1)

self.tab1.columnconfigure(cols, weight=1)

self.tab2.rowconfigure(rows, weight=1)

self.tab2.columnconfigure(cols, weight=1)

cols += 1

rows += 1

self.tab1Label = tk.Label(self.tab1, text="This is a Label")

self.tab1Label.grid(column=0, row=0, sticky='NW')

self.tab1Label2 = tk.Label(self.tab1, text="This is also a Label")

self.tab1Label2.grid(column=0, row=1, sticky='NW')

self.makePlot()

def makePlot(self):

f = Figure(figsize=(5, 5), dpi=100)

a = f.add_subplot(111)

a.plot([1, 2, 3, 4, 5, 6, 7, 8], [5, 6, 1, 3, 8, 9, 3, 5])

canvas = FigureCanvasTkAgg(f, self.tab2)

canvas.draw()

canvas.get_tk_widget().grid(column=2, row=0, columnspan=2, sticky='NSEW')

def main():

MainGUI().mainloop()

if __name__ == '__main__':

main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置`ttk.Notebook`中Tab页面的大小,可以使用`ttk.Style`来自定义样式并将其应用于`ttk.Notebook`小部件。以下是一个示例代码,演示如何设置Tab页面的大小: ```python import tkinter as tk from tkinter import ttk root = tk.Tk() root.title("Tab示例") # 创建Style对象 style = ttk.Style() # 设置Tab页面的大小 style.configure("TNotebook.Tab", padding=(10, 5)) # 调整内边距 notebook = ttk.Notebook(root, style="TNotebook") notebook.pack(pady=10) tab1 = ttk.Frame(notebook) notebook.add(tab1, text="Tab 1") label1 = ttk.Label(tab1, text="这是第一个Tab页面") label1.pack(pady=10) tab2 = ttk.Frame(notebook) notebook.add(tab2, text="Tab 2") label2 = ttk.Label(tab2, text="这是第二个Tab页面") label2.pack(pady=10) root.mainloop() ``` 在上面的代码中,我们首先创建了一个`ttk.Style`对象,并使用`configure()`方法来自定义`TNotebook.Tab`样式。通过设置`padding`参数,我们可以调整Tab页面的内边距。 然后,我们创建了一个带有自定义样式的`ttk.Notebook`小部件,并将其放置在主窗口中。在每个Tab页面中,我们添加了一个`Label`小部件作为示例内容。 您可以根据需要调整`padding`参数的值来控制Tab页面的大小。除了`padding`,还可以使用其他样式选项来自定义Tab页面的外观,例如背景颜色、字体等。 请注意,不同的操作系统和`ttk`主题可能会对样式的效果产生影响。如果您希望更大程度地控制Tab页面的外观和布局,可以考虑使用其他第三方库,如`ttkthemes`,提供了更多的主题和样式选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值