首页 > 解决方案 > tkinter 选项卡中的滚动条无法正常工作。滚动条位于我的 gui 应用程序的底部,而不是覆盖整个选项卡

问题描述

滚动条位于我的应用程序的底部,而不是覆盖整个选项卡,实际上滚动条不起作用。我应该改变什么?

我在 tkinter 中制作了这个应用程序,但它看起来不像我想要的那样。下面的代码显示了它的外观,并且在链接中我放置了我的应用程序的屏幕

import tkinter as tk    
from tkinter import ttk    
from tkinter import scrolledtext    
from tkinter import Menu    
from functools import partial    
from math import sqrt, erfc, pi    
from scipy.integrate import quad  ## funkcja calkujaca    
import numpy as np    
from matplotlib import cm    
import matplotlib.pyplot as plt    
from mpl_toolkits.mplot3d import Axes3D    

win = tk.Tk()    


win.title("Aplikacja do projektowania")    

tabControl = ttk.Notebook(win)  # Create Tab Control    

tab1 = ttk.Frame(tabControl)  # Create a tab    
tabControl.add(tab1, text='Obliczenia poglądowe')  # Add the tab    
tab2 = ttk.Frame(tabControl)  # Add a second tab    
tabControl.add(tab2, text='Obliczenia zaawansowane')  # Make second tab     visible    

tabControl.pack(expand=1, fill="both")  # Pack to make visible    


dane = ttk.LabelFrame(tab1, text=' Wstaw dane ')    
dane.grid(column=0, row=0, padx=8, pady=2)    
dane2 = ttk.LabelFrame(tab2, text=' Wartości: ')    
dane2.grid(column=0, row=0, padx=5, pady=4)    


dane2 = ttk.LabelFrame(tab2, text=' Wartości: ')    
dane2.grid(column=0, row=0, padx=5, pady=4)   

我猜问题是由下面的代码造成的,但我不知道如何改变它

scrollbar = tk.Scrollbar(win)    
scrollbar.pack(side = tk.RIGHT, fill = tk.Y)             
scrollbar.config(command = dane2.config)



a0_label = ttk.Label(dane2, text="   ")    
a0_label.grid(column=0, row=0, sticky='W')    
a1_label = ttk.Label(dane2, text="Maksymalne godzinowe obciążenie gruntu: [W] ")    
a1_label.grid(column=0, row=1, sticky='W')    

win.mainloop()   

如果有人知道如何处理此错误,我将不胜感激

它的外观图片:

它看起来如何的图片

标签: pythontkinterscrollbar

解决方案


你告诉 tkinter 打包 tabControl 并使用所有可用空间。在打包tabControl之前创建并打包滚动条,这样就没有你想要滚动条使用的空间了。

import tkinter as tk
from tkinter import ttk

win = tk.Tk()
win.title("Aplikacja do projektowania")
tabControl = ttk.Notebook(win)  # Create Tab Control
tab1 = ttk.Frame(tabControl)  # Create a tab
tabControl.add(tab1, text='Obliczenia poglądowe')  # Add the tab
tab2 = ttk.Frame(tabControl)  # Add a second tab
tabControl.add(tab2, text='Obliczenia zaawansowane')  # Make second tab visible

# Packing the scrollbar before the tabControl
scrollbar = tk.Scrollbar(win)
scrollbar.pack(side = tk.RIGHT, fill = tk.Y)

tabControl.pack(expand=1, fill="both")  # Pack to make visible
dane = ttk.LabelFrame(tab1, text=' Wstaw dane ')
dane.grid(column=0, row=0, padx=8, pady=2)
dane2 = ttk.LabelFrame(tab2, text=' Wartości: ')
dane2.grid(column=0, row=0, padx=5, pady=4)
dane2 = ttk.LabelFrame(tab2, text=' Wartości: ')
dane2.grid(column=0, row=0, padx=5, pady=4)
a0_label = ttk.Label(dane2, text="   ")
a0_label.grid(column=0, row=0, sticky='W')
a1_label = ttk.Label(dane2, text="Maksymalne godzinowe obciążenie gruntu: [W] ")
a1_label.grid(column=0, row=1, sticky='W')
scrollbar.config(command = dane2.config)

win.mainloop()

新窗户


推荐阅读