Nobody is me 2022-01-01 11:00 采纳率: 100%
浏览 353
已结题

想要在python-tkinter可视化窗口中加入滚动条

在文章之前,我先说明我是一个初学者,且对tkinter的知识都是自学,所以希望各位给予我一些建议,谢谢各位了
我现在在做一个可视化弹窗,内容是点击按钮之后会出现几张照片,但因为照片过大无法完全显示,而且后期也会加入其他的内容,所以需要加入滚动条来使其能翻页(不要说把弹窗拉大了,以后还想加很多东西,结果在滚动条这里卡好几天了,呜~)
我的代码如下:


from tkinter import *     # 弹窗的库
from PIL import Image,ImageTk
 #设置主页面函数

root = Tk(className='主页')         #设计弹窗函数名和标题
root.geometry('800x500')            # 设置弹窗大小
def Main():
    menu = Menu()                       # 设置头顶框
    menu.add_command(label="open")
    menu.add_command(label="add")
    menu.add_command(label="delete")
    root.config(menu=menu)


    butn1 = Button(root,text='龙庭大酒店',width=100,command=Long)    # command为链接,打开相应函数
    butn1.pack()
    

  #设计龙庭大酒店的窗口
def Long():
    pi1_open = Image.open('期末作业\龙庭大酒店1.jpg')
    global pi1_gif
    pi1_gif = ImageTk.PhotoImage(pi1_open)
    label_pi1 = Label(image=pi1_gif)
    label_pi1.pack()

    pi2_open = Image.open('期末作业\龙庭大酒店2.jpg')
    global pi2_gif
    pi2_gif = ImageTk.PhotoImage(pi2_open)
    label_pi2 = Label(image=pi2_gif)
    label_pi2.pack()

    pi3_open = Image.open('期末作业\龙庭大酒店3.jpg')
    global pi3_gif
    pi3_gif = ImageTk.PhotoImage(pi3_open)
    label_pi3 = Label(image=pi3_gif)
    label_pi3.pack()


Main()
mainloop()

其中关于第二个函数“Long”就是添加照片的函数,直接将代码传上来运行就没有照片
之前也搜过一些资料,说Scrollbar只能与canvas、entry、listbox、text相结合,所以我是否要重写代码?还是要加一个函数或类?
(完全自学,希望各位给予建议)

  • 写回答

2条回答 默认 最新

  • Smart-Space 2022-01-08 07:24
    关注

    将画布作为窗口的整体(顶层组件)组件是一个不错的选择。你可以将滚动条绑定到画布,甚至可以实时更新滚动条的可视范围。

    无论是绑定滚动条还是自动更新可视范围,都可以参考:https://blog.csdn.net/tinga_kilin/article/details/114737655

    然后就可以直接在画布中任意位置载入图片了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 1月1日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分