山野村夫-陈墨 发表于 2020-3-2 23:09

tkinter--实现简单的页面切换

上一篇帖子中页面切换其实存在一个很重要的问题--页面切换==对象新建。
造成的问题就是,每次页面切换都需要自己重新输入数据, 费时费力!
为了解决这个问题, 借鉴了web前端中页面滚动的思想。
类似动画片最早的播放。



程序简单,就不多说了。
importtkinter as tk

index_num = 4

defup_page():
    info = frame_root.place_info()
    x = int(info['x']) + 100
    y = info['y']
    frame_root.place(x=x, y=y)
    globalindex_num
    index_num += 1
    index['text'] = "第 {} 页".format( index_num)


def down_page():

    info = frame_root.place_info()
    x = int (info['x'] ) - 100
    y = info['y']
    frame_root.place(x=x, y=y)
    globalindex_num
    index_num -=1
    index['text'] = "第 {} 页".format( index_num)



root =tk.Tk()
root.title("滚动页面")
root.geometry("800x300+200+200")

#显示框架- 大小和最小子框架相同
show_frame = tk.Frame( master=root, width= 100, height=200,bg="black")
show_frame.place(x=10, y=10)
#测试会不会多放一个
show_frame.place(x=250, y=10)

#容器框架,大小是所有子框架的大小总和--放在显示框架里
frame_root = tk.Frame( master=show_frame, width= 300, height=200,bg="green")
frame_root.place(x=0, y=0)

# 最小子框架---放在容器框架里
frame_1 = tk.Frame( master=frame_root, width= 100, height=200,bg="cyan")
frame_1.place(x=0, y=10)
tk.Label(master=frame_1, text="第四页").grid( row=0, column=0 )
tk.Entry(master=frame_1).grid( row=0, column=1)

frame_2 = tk.Frame( master=frame_root, width= 100, height=200,bg="blue")
frame_2.place(x=100, y=10)
tk.Label(master=frame_2, text="第三页").grid( row=0, column=0 )
tk.Entry(master=frame_2).grid( row=0, column=1)


frame_3 = tk.Frame( master=frame_root, width= 100, height=200,bg="yellow")
frame_3.place(x=200, y=10)
tk.Label(master=frame_3, text="第二页").grid( row=0, column=0 )
tk.Entry(master=frame_3).grid( row=0, column=1)

index = tk.Label( text=" 第 4 页 " )
index.pack()


tk.Button( text="上一页",command= up_page ).pack()
tk.Button( text="下一页",command= down_page ).pack()

root.mainloop()


blindcat 发表于 2020-3-3 07:24

感谢分享

xuanwuben 发表于 2021-12-23 17:22

感谢分享,好好学习一下

hiodis 发表于 2022-1-3 22:05

不会。。。。
页: [1]
查看完整版本: tkinter--实现简单的页面切换