首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

tkinter:在画布上使用滚动条

tkinter: 在画布上使用滚动条

在Python的tkinter库中,可以通过创建滚动条组件来在画布上实现滚动。目前,tkinter库提供了两种滚动条,分别是ScrollbarNotebook

1. Scrollbar

Scrollbar是水平或垂直方向的滚动条。

1.1 使用Scrollbar

在创建Scrollbar实例时,需要传递一个参数orient,它用于指定滚动条的放置方向,可以是HORIZONTALVERTICAL

代码语言:python
代码运行次数:0
复制
import tkinter as tk

root = tk.Tk()

# 水平滚动条
hsb = tk.Scrollbar(root, orient=tk.HORIZONTAL)
hsb.pack(fill=tk.X, padx=10, pady=10)

# 垂直滚动条
vsb = tk.Scrollbar(root, orient=tk.VERTICAL)
vsb.pack(fill=tk.Y, padx=10, pady=10)

1.2 滚动条回调函数

Scrollbar类提供了config方法,用于配置滚动条的外观和行为。同时,Scrollbar类还提供了command参数,用于指定在滚动过程中要执行的函数。

代码语言:python
代码运行次数:0
复制
import tkinter as tk

def on_scroll(direction):
    print(f"滚动:{direction}")

root = tk.Tk()

# 水平滚动条
hsb = tk.Scrollbar(root, orient=tk.HORIZONTAL)
hsb.config(command=on_scroll)
hsb.pack(fill=tk.X, padx=10, pady=10)

# 垂直滚动条
vsb = tk.Scrollbar(root, orient=tk.VERTICAL)
vsb.config(command=on_scroll)
vsb.pack(fill=tk.Y, padx=10, pady=10)

root.mainloop()

2. Notebook

Notebook是tkinter中的一种控件,可以嵌套在其他控件中。它相当于一个容器,可以容纳其他控件,并使用packpack_forget等方法将其放置在画布上。

2.1 使用Notebook

创建Notebook实例时,需要传递一个参数parent,它用于指定父控件。

代码语言:python
代码运行次数:0
复制
import tkinter as tk

root = tk.Tk()

# 创建一个文本框
text_box = tk.Text(root)

# 创建一个笔记本
notebook1 = tk.Notebook(root)

# 在笔记本中添加一个标签
notebook1.add(tk.Label(text_box, text="Hello World!"))

# 将笔记本添加到父控件中
root.add(notebook1)

root.mainloop()

2.2 滚动条回调函数

Notebook类本身并没有提供滚动条回调函数。但是,我们可以在Text控件中添加滚动条,并在Notebook中调整文本框的可见性来实现滚动。

代码语言:python
代码运行次数:0
复制
import tkinter as tk

def on_scroll(direction):
    if direction == tk.LEFT:
        text_box.yview_moveto(1)
    elif direction == tk.RIGHT:
        text_box.yview_moveto(-1)
    elif direction == tk.UP:
        text_box.xview_moveto(1)
    elif direction == tk.DOWN:
        text_box.xview_moveto(-1)

root = tk.Tk()

text_box = tk.Text(root, wrap=tk.WORD)
text_box.pack(fill=tk.BOTH, expand=True)

scroll_bar = tk.Scrollbar(root)
scroll_bar.pack(fill=tk.Y, side=tk.RIGHT)
scroll_bar.config(command=text_box.yview)

text_box.config(yscrollcommand=scroll_bar.set)

root.mainloop()

3. 总结

通过使用滚动条,我们可以轻松地实现画布上文本的滚动。在Python的tkinter库中,我们可以使用ScrollbarNotebook控件来实现滚动。在滚动条回调函数中,我们可以根据滚动条的滚动状态来调整文本框的可见性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

软件测试|超好用超简单的Python GUI库——tkinter(十四)

前言 我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。...Canvas画布控件 Canvas 控件具有两个功能,首先它可以用来绘制各种图形,比如弧形、线条、椭圆形、多边形和矩形等,其次 Canvas 控件还可以用来展示图片(包括位图),我们将这些绘制画布控件的图形...通过 Canvas 控件创建一个简单的图形编辑器,让用户可以达到自定义图形的目的,就像使用画笔画布绘画一样,可以绘制各式各样的形状,从而有更好的人机交互体验。...,认为鼠标位于画布对象 2....) # 显示窗口 root.mainloop() 运行程序,绘制的图像如下: 图片 总结 本文主要介绍了tkinter画布控件canvas的基本属性,包括绘制简单的线条,后续我们将使用Canvas控件绘制更多图形

90410

python学习之GUI(Tkinter

,command=buttonClick) button.pack() window.mainloop() 同理将方法改为改变按钮的文字 import Tkinter as tk window=tk.Tk...(*),使用方式:添加文本框时,添加一个额外的具名自变量,这样文本框就变成了一个密码框 GUI中会有一个输入密码的框和一个提交密码的按钮。... as tk window=tk.Tk() slider=tk.Scale(window,from_=0,to=100) slider.pack() tk.mainloop() 滚动条的创建与使用 import... Tkinter as tk window=tk.Tk() slider=tk.Scale(window,from_=0,to=100) slider.pack() tk.mainloop() 画布的创建...=colour) canvas.pack() window.mainloop() 颜色选择器:画布滚动条的配合使用 注:通过三个滚动条的选择从而决定三原色红,绿,蓝三个颜色的占用,从而组成喜欢的颜色

1.1K10
  • 测试之路 pytest接口自动化框架扩展-GUI窗口

    使用pyqt5一是有点大材小用,二是学习成本会有点高。所以我就选择了tkiner 于是从网上搜索相关tkinter的相关教程。总结一下我所学习到方法以及用法。...tkinter 导包并创建Tk()对象 实例化Tk()对象就等于创建了一个画布,我们在这个画布上进行“创作”即可 PS:最后结尾需要调用mainloop这个方法。...这个方法可以看做死循环,可以对画布中的操作重复无数遍。指导你退出程序。就如同我们使用软件一样。所有软件都是重复使用的,不可能只操作一次就退出了。...添加一个按钮画布中 def onclick(): print("别点我!")...使用时,会使窗口页面适配所运行平台,UI更好看 # 使用时,直接导入from tkinter.ttk import *即可 ttk.Button(self.root, text

    2.9K30

    Python--TKinter

    Menu代替 滚动条 Scale 滑块组件 Scrollbar 滚动条组件 其他组件 Canvas 画布组件 Frame...框架组件,将多个组件编组 Toplevel 创建子窗口容器组件 组件的大致使用步骤 创建总面板 创建面板的各种组件 指定组件的父组件,即附属关系 利用相应的属性对组件进行设置 给组件安排布局....pack() base.mainloop() # Button案例 import tkinter def showLable(): global baseFrame # 函数中定义了一个...place函数,分为绝对布局和相对布局,绝对布局是使用x,y参数 相对布局是使用relx,rely,relheight,relwidth # pack布局案例 import tkinter baseFrame...画布:可以自由的在上面绘制图形的一个小舞台 画布绘制对象,通常用create_xxxx,xxxx=对象类型,例如line,rectangle 画布的作用的把一定的组件画到画布显示出来 画布所支持的组件

    5.1K107

    html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只某个div内使用滚动条

    滚动条基本知识: 建议比价华丽的页面使用overflow:scroll这个样式的滚动条,比较好看。...2. scrollbar-3d-light-color立体滚动条亮边的颜色(设置滚动条的颜色) scrollbar-arrow-color上下按钮三角箭头的颜色 scrollbar-base-color...加上一点特别的效果: 4.样式表文件中定义好一个类...; Scrollbar-Highlight-Color为滚动条斜面和左斜面颜色设定; Scrollbar-Shadow-Color为滚动条下斜面和右斜面颜色设定; Scrollbar-3Dlight-Color...,只某个div内使用滚动条 先说说正常显示的,显示滚动条和不显示滚动条,效果图如下: 代码: iframe 中始终显示滚动条: <iframe src

    4.6K30

    python--GUI编程--Tkinter

    TkinterTkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以大多数的 Unix 平台下使用,同样可以应用在 Windows...Python 使用 Tkinter 可以快速的创建 GUI 应用程序。...Tkinter 组件 Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。 目前有15种Tkinter的部件。...Canvas 画布控件;显示图形元素如线条或文本 Checkbutton 多选框控件;用于程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;屏幕显示一个矩形区域...消息控件;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件

    3.8K30

    Python Tkinter图形工具使用方法及实例解析

    多行文本框组件 标签组件 Label 标签组件,可以显示图片和文字 Message 标签组件, 可以根据内容将文字换行 菜单 Menu 菜单组件 MenuButton 菜单按钮组件,可以实用Menu代替 滚动条...Scale 滑动组件 Scrollbar 滚动条组件 其他组件 Canvas 画布组件 Frame 框架组件,将多个组件编组 Toplevel 创建子窗口容器组件 组件的大致实用步骤创建总面板创建面板各种组件...BOTH,NONE expande:YES/NO 扩充 anchor:N,E,S,W,CENTER ipadx:x方向的内边距 ipady:y padx:x的外方向边界 pady:y grid布局 通用使用方式...place函数,分为绝对布局和相对布局,绝对布局使用X,Y参数 相对布局使用relx,rely,relheight,relwidth 案例1:创建一个自己定义的弹窗、并且里面有文字内容 执行完成就会弹出一个白色定义好的小方框...grid布局 通用使用方式:组件对象.grid(设置……) 利用row,cblumn编号,都是从0开始 sticky:N,E,S,W表示上下左右,用来决定组件从哪个方向开始 支持ipadx,padx等参数

    1.5K30

    小朋友学Python(24):Tkinter图形界面编程

    Tkinter 是 Python 的标准 GUI (Graphic User Interface)库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。...4.png Tkinter 组件 Tkinter的提供各种控件,如按钮,标签和文本框等。 目前有15种Tkinter控件。下表作了简单的介绍: 控件 描述 Button 按钮控件;程序中显示按钮。...Canvas 画布控件;显示图形元素如线条或文本 Checkbutton 多选框控件;用于程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;屏幕显示一个矩形区域...消息控件;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件...,当内容超过可视化区域时使用,如列表框。.

    4.8K70

    JavaScript 编程精解 中文第三版 十七、画布绘图

    我们可以使用drawImage方法画布绘制像素值。此处的像素数值可以来自元素,或者来自其他的画布。下例创建了一个独立的元素,并且加载了一张图像文件。...诚然,我们可以绘制另一组精灵,但我们也可以使用另一种方式画布绘图。 我们可以调用scale方法来缩放之后绘制的任何元素。...DOM 也可以允许我们图片的每一个元素(甚至 SVG 画出的图形)注册鼠标事件的处理器。画布里则实现不了。 但是画布的基于像素的方法需要绘制大量的微小元素时会有优势。...它不会构建新的数据结构而是仅仅重复的同一个像素绘制,这使得画布每个图形拥有更低的消耗。...一个画布展示动画时,clearRect方法可以用来重绘之前清除画布的某一部分。 习题 形状 编写一个程序,画布上画出下面的图形。

    3.8K30

    Python-GUI|Tkinter模块

    它可以跨平台运行在Windows,Linux和Mac等系统。 这篇文章不会介绍如何灵活地运用Tkinter,而是阐述Tkinter这个库包括什么,它能干什么!...我们这里使用text来指定要显示的文本,而第一个参数root,表明x的父控件是root,bg属性表示label的背景色,font指明文本所用字体,width,height指明label的宽度和高度。...控件梳理 Button 按钮控件;程序中显示按钮 Canvas 画布控件;显示图形元素,如线条或文本 Checkbutton 多选框控件,用于程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容...Frame 框架控件;屏幕显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件;Listbox窗口小部件是用来显示一个字符串列表给用户...;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件

    4.6K100

    Linux 使用 BusyBox

    安装 BusyBox Linux ,你可以使用你的软件包管理器安装 BusyBox。...例如, Fedora 及类似发行版: $ sudo dnf install busybox Debian 及其衍生版: $ sudo apt install busybox MacOS ,可以使用... Windows ,可以使用 Chocolatey。你可以将 BusyBox 设置为你的 shell,使用 chsh —shell 命令,然后再加上 BusyBox sh 应用程序的路径。...换句话说,虽然技术可以用 BusyBox 的 init 替换系统的 init,但你的软件包管理器可能会拒绝让你删除包含 init 的软件包,以免你担心删除会导致系统无法启动。...有一些发行版是建立 BusyBox 之上的,所以从新环境开始可能是体验 BusyBox 系统的最简单方法。

    2.7K10

    Kubernetes 使用 CUDA

    我目前一台运行 Debian 11 的裸机单节点使用 containerd 运行 Kubernetes 1.28“集群”,所以这篇文章将假设一个类似的设置,尽管我尝试链接到其他设置的相关资源。...Test PASSED 如果一切正常,只需每个您想要访问 GPU 资源的工作负载添加 nvidia.com/gpu 的资源限制即可。...使用 Argo CD,我添加了一个负的 sync-wave 注解,以确保工作负载之前启动 nvidia-device-plugin 以避免此问题。...可能是我的设置问题,或者我文档中理解错了什么。如果您有解决方案,我很乐意倾听! 总结 我正在使用 Argo CD 与 Kustomize + Helm 尝试遵循 GitOps 最佳实践。...撰写本文时,我的完整家庭实验室配置可在 GitHub 作为参考。

    13710

    Linux 使用 Multitail

    虽然通常使用简单,但是 multitail 提供了一些命令行和交互式选项,开始使用它之前,你应该了解它们。...基本 multitail 使用 multitail 的最简单用法是命令行中列出你要查看的文件名称。此命令水平分割屏幕(即顶部和底部),并显示每个文件的底部以及更新。...然后,你可以再次使用向上和向下箭头放大的区域中滚动浏览各行。完成后按下 q 返回正常视图。...获得帮助 multitail 中按下 h 将打开一个帮助菜单,其中描述了一些基本操作,但是手册页提供了更多信息,如果莫想了解更多有关使用此工具的信息,请仔细阅读。...默认情况下,你的系统不会安装 multitail,但是使用 apt-get 或 yum 可以使你轻松安装。该工具提供了许多功能,不过它是基于字符显示的,窗口边框只是 q 和 x 的字符串组成的。

    1.9K20

    window使用cmake

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/using-msys-make-in-windows/ github看了很多程序,发现都是用cmake来自动生成...但是我使用时总是碰到很多错误,首先就是cl找不到,用图形化工具时也是找不到。 如果正确地使用cmake?...首先,确保自己的系统中存在cmake可以识别的编译工具,但是,这个编译工具属于半自动识别,命令行下你需要使用 -G 参数来选择Generator,只有选对正确地Generator,才可以识别到你的工具链...首先使用MinGW下载MSYS的make工具,然后添加进系统路径,确保命令行下make可以正常运行 下载cmake,这个可以网络搜索下载,注意添加进系统路径 工程的根目录下新建 build文件夹,进入这个文件夹

    1.4K10

    MenuItem使用RadioButton

    上图这种包含多选(CheckBox)和单选(RadioButton)的菜单十分常见,可是WPF中只提供了多选的MenuItem。...因为微软并没有文档中提供Aero2的样式,所以以前要获取一个控件的样式标准的做法是使用Blend选中控件后编辑控件的模板,但因为MenuItem会有不同的Role,所以它当前的模板会不一样,用Blend...Blend,以前还可以使用ILSpy反编译出它的资源文件获取控件的样式。...幸好现在WPF开元了,Aero2的样式也可以 Github 找到。大概500行的样子,虽然大致只需要将CheckBox的✔换成一个圆点,但分别搞四次加上些细微的调整把我搞糊涂了。...因为它只提供了Aero2的样式,如果要用在Win7最好再定义一个Aero的样式,或者直接将全局样式改为Aero2,我 这篇文章 里介绍了如何在Win7使用Aero2的样式,可供参考。

    2.1K20
    领券