📜  使用 Python-tkinter 自动隐藏滚动条

📅  最后修改于: 2022-05-13 01:55:50.559000             🧑  作者: Mango

使用 Python-tkinter 自动隐藏滚动条

在继续讨论该主题之前,让我们看看Python Tkinter 是什么。因此,我们都知道Python有不同的创建 GUI 的选项,而tkinter就是其中之一。它是Python的标准GUI库。当Python与它合并时,它使得 GUI 应用程序的创建非常快速仍然简单。它还为Tk GUI 工具包提供了一个非常有效的面向对象接口。

注意:更多信息请参考Python GUI – tkinter

tkinter 中的小部件

此外, Tkinter还支持许多控件,如标签、文本框、列表框、按钮、滚动条等,这些控件在 GUI 应用程序中使用。这些控件称为小部件。

tkinter的几何管理方法

这些方法用于跨父小部件区域组织小部件。此外,所有 tkinter 小部件都可以访问这些方法。共有三种几何管理方法,即pack()、grid() 和 place() 。所有这些方法都有不同的作用。
现在,让我们讨论一下使用 Python- tkinter 自动隐藏滚动条的主题。
在本主题中,我们将看到如何在Python中使用 tkinter 创建自动隐藏滚动条。所以,首先让我们看看下面自动隐藏滚动条的含义:

自动隐藏滚动条

当滚动条在不需要时隐藏自己,即,在不需要时不可见,那么这种类型的滚动条称为自动隐藏滚动条。在Python中,自动隐藏滚动条可以与ListboxText小部件一起使用。它可以在一些几何管理方法的帮助下使用Python tkinter 来实现。
下面的示例说明了使用 Python-tkinter 使用自动隐藏滚动条
示例 1:

# Python program to illustrate the usage of 
# autohiding scrollbars using tkinter
   
# Importing tkinter
from tkinter import *
   
# Creating class AutoScrollbar
class AutoScrollbar(Scrollbar):
       
    # Defining set method with all 
    # its parameter
    def set(self, low, high):
           
        if float(low) <= 0.0 and float(high) >= 1.0:
               
            # Using grid_remove
            self.tk.call("grid", "remove", self)
        else:
            self.grid()
        Scrollbar.set(self, low, high)
       
    # Defining pack method
    def pack(self, **kw):
           
        # If pack is used it throws an error
        raise (TclError,"pack cannot be used with \
        this widget")
       
    # Defining place method
    def place(self, **kw):
           
        # If place is used it throws an error
        raise (TclError, "place cannot be used  with \
        this widget")
  
# creating tkinter window 
root = Tk()
   
# Defining vertical scrollbar
verscrollbar = AutoScrollbar(root)
   
# Calling grid method with all its
# parameter w.r.t vertical scrollbar
verscrollbar.grid(row=0, column=1, 
                  sticky=N+S)
   
# Defining horizontal scrollbar
horiscrollbar = AutoScrollbar(root, 
                              orient=HORIZONTAL)
   
# Calling grid method with all its 
# parameter w.r.t horizontal scrollbar
horiscrollbar.grid(row=1, column=0, 
                   sticky=E+W)
   
# Creating scrolled canvas
canvas = Canvas(root,
                yscrollcommand=verscrollbar.set,
                xscrollcommand=horiscrollbar.set)
  
canvas.grid(row=0, column=0, sticky=N+S+E+W)
   
verscrollbar.config(command=canvas.yview)
horiscrollbar.config(command=canvas.xview)
   
# Making the canvas expandable
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
   
# creating canvas contents
frame = Frame(canvas)
frame.rowconfigure(1, weight=1)
frame.columnconfigure(1, weight=1)
   
# Defining number of rows and columns
rows = 20
for i in range(1,rows):
    for j in range(1,9):
        button = Button(frame, padx=8, pady=8, 
                        text="[%d,%d]" % (i,j))
        button.grid(row=i, column=j, sticky='news')
  
# Creating canvas window
canvas.create_window(0, 0, anchor=NW, window=frame)
   
# Calling update_idletasks method
frame.update_idletasks()
   
# Configuring canvas
canvas.config(scrollregion=canvas.bbox("all"))
   
# Calling mainloop method
root.mainloop()

输出: