python滚动条变小_Python tkinter滚动条/图形缩放减慢滚动

该博客展示了一个使用Python tkinter库创建的带有滚动条的Canvas示例,用于显示大量数据(如点)而不会降低性能。通过两个独立的Canvas小部件,一个用于缩放,一个用于滚动,实现平滑的用户体验。示例代码包括创建滚动条、设置Canvas和调整布局的详细步骤。
摘要由CSDN通过智能技术生成

如果你想用滚动条滚动而不是缩放滚动,你应该使用两个单独的窗口。我不知道你说的“和你平常看到的不一样”是什么意思。如果您将两个画布并排放置,中间没有空格,并且背景颜色相同,那么用户将无法知道您同时在使用两个画布小部件。在

tkinter画布可以滚动几千个项目,然后开始变得迟钝,所以很难说没有看到您的实际代码。在

下面是一个绘制10000个点的示例,比例在一个单独的画布中:import Tkinter as tk

from random import randrange

class Example(tk.Frame):

def __init__(self, master):

tk.Frame.__init__(self, master)

self.DrawArea = tk.Canvas(self, width=1000, height=600, background="black",

borderwidth=0, highlightthickness=0)

self.scale = tk.Canvas(self, width=30, height=600, background="black",

borderwidth=0, highlightthickness=0)

self.hsb = tk.Scrollbar(self, orient="horizontal", command=self.DrawArea.xview)

self.vsb = tk.Scrollbar(self, orient="vertical", command=self.DrawArea.yview)

self.DrawArea.configure(yscrollcommand=self.vsb.set, xscrollcommand=self.hsb.set)

self.DrawArea.grid(row=0, column=0, sticky="nsew")

self.scale.grid(row=0, column=1, sticky="nsew")

self.vsb.grid(row=0, column=2, sticky="ns")

self.hsb.grid(row=1, column=0, columnspan=2,sticky="ew")

self.grid_rowconfigure(0, weight=1)

self.grid_columnconfigure(0, weight=1)

self.draw_scale()

self.draw_points()

def draw_scale(self):

value = 5.0

for y in range(25, 600, 25):

self.scale.create_text((25, y), text=str(value), fill="white", anchor="ne")

value -= 0.5

def draw_points(self):

import math

for x in range(5,10000):

y = randrange(600)

color = "green" if (300 > y > 200) else "red"

self.DrawArea.create_rectangle(x-2,y-2,x+2,y+2, fill=color)

self.DrawArea.configure(scrollregion = self.DrawArea.bbox("all"))

root = tk.Tk()

Example(root).pack(fill="both", expand=True)

root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值