Python tkinter Scrollbar控件

本文展示了如何使用Python的Tkinter库和PIL库创建一个带有文本和图片的新闻阅读窗口。通过Text控件插入新闻内容,Scrollbar控件提供水平和垂直滚动功能,使用户能便捷浏览长文本和图片。代码清晰,适合作为参考模板。
摘要由CSDN通过智能技术生成

使用Text控件、Scrollbar控件实现一个阅读新闻的窗口

实现代码如下:

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

# 设置窗口标题
root.title('新闻阅读')
# 设置窗口宽度600 高度500
root.geometry('600x500')

content1 = """ 
中国天气网讯 “春天的味道,夹杂着泥土的气息。”今年以来,我国北方遭遇5次沙尘天气过程。根据预报,明天(3月26日)开始到28日,北方又将出现一次大范围沙尘天气过程,北京等华北地区本周末将现扬沙或浮尘,局地有沙尘暴。为什么今年沙尘天气格外频繁?中国天气网分析师详细解答。

北方将迎新一轮沙尘天气 北京周日空气质量转差

今天,受高空槽东移和弱冷空气东移南下影响,沙尘天气主要出现在西北地区一带。明天开始,受蒙古气旋东移影响,我国北方还将陆续出现一次较强沙尘天气过程。预计明天,内蒙古中部、河北北部等地有扬沙或浮尘天气。本周末,沙尘天气范围扩大,甘肃、内蒙古、宁夏、陕西、山西、河北、北京、天津、辽宁、山东等地将出现扬沙或浮尘天气,局地有沙尘暴。

其中,北京地区周日将再现沙尘天气,空气质量转差。预计受影响的时间为凌晨至白天,以扬沙为主。
"""

content2 = """ 
3月15日,北京遭遇沙尘天气,天空昏黄土腥味浓。(图/中国天气网王晓)

对于此前出现的近10年来最强沙尘过程,不少人记忆犹新,这次的沙尘是否会跟上次一样强呢?中国天气网分析师张娟表示,由于同样受蒙古气旋的影响,即将到来的沙尘过程与上次影响路径相似,但气旋强度弱于上次,所以沙尘天气的整体强度偏弱,影响范围也偏小。

沙源地前期异常偏暖 致今年沙尘过程多于常年

截至昨天,今年以来北方地区已出现5次沙尘天气过程,和常年1月至3月沙尘天气次数基本相当。今后四天还将出现2次沙尘天气过程,使得今年沙尘天气多于常年同期。

到底是什么原因造成了今年沙尘天气如此频繁?张娟表示,2月中下旬开始,北方多地异常偏暖,内蒙古中西部沙源地偏暖幅度同期少见,土壤提前解冻,并且降水也持续偏少,蒙古国也出现类似的情况,所以在蒙古气旋、冷空气带来的大风影响下就会频频掀起沙尘天气过程。

从常年数据统计来看,每年进入3月以后,我国北方沙尘天气也是进入高发期。春季气温回升迅速,北方沙源地开始解冻,加上北方冷空气活动频繁,大风天气多发,就容易把地表的土或沙吹起来,从而形成沙尘天气。

气象专家提醒,关闭门窗是躲避沙尘的有效方法,沙尘天气来袭时,老人、儿童及患有呼吸道系统疾病、易过敏人群应尽量减少外出,如果必须出门,需做好健康防护,外出回家后及时清洗面部和口鼻。
"""

txt = tk.Text(
    root,
    font=('楷体', 15),
    bg='#e9faff',
    width=650,
    height=400
)

# 插入文本1
txt.insert(tk.INSERT, content1)

# 插入图片 tk.PhotoImage 只能读取gif的图片
photo = ImageTk.PhotoImage(file="D:\\lianxi_py\\three\\image\\11.jpeg")
txt.image_create(tk.INSERT, image=photo)

# 插入文本内容2
txt.insert(tk.INSERT, content2)

# 设置内容不可编辑 若想更新内容 则改为normal
txt.config(state='disabled')

# 创建下方滚动条
scroll_x = tk.Scrollbar(root, orient=tk.HORIZONTAL)
# 创建右侧滚动条
scroll_y = tk.Scrollbar(root)
# 放到窗体的右侧 沿Y轴平铺
scroll_y.pack(side=tk.RIGHT, fill=tk.Y)
# 放到窗体的下方 沿X轴平铺
scroll_x.pack(side=tk.BOTTOM, fill=tk.X)
txt.pack(side=tk.RIGHT, fill=tk.Y)
# 关联文本控件
scroll_y.config(command=txt.yview)
scroll_x.config(command=txt.xview)
txt.config(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)

# 进入程序循环
root.mainloop()

效果如下:

记录一下,备以后借鉴使用

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值