首页 > 解决方案 > python tkinter - 如何使 ttk Notebook 选项卡更改其顺序?

问题描述

是否有可能做到这一点:

在此处输入图像描述

ttk.Notebook小部件?

标签: pythontkintertabsttk

解决方案


是的,有可能。您必须绑定B1-Motion到一个函数,然后用于notebook.index("@x,y")在鼠标位置获取选项卡的索引。然后,您可以使用notebook.insert()插入特定位置。

import tkinter as tk
from tkinter import ttk


def reorder(event):
    try:
        index = notebook.index(f"@{event.x},{event.y}")
        notebook.insert(index, child=notebook.select())

    except tk.TclError:
        pass

root = tk.Tk()
root.geometry("500x500")

notebook = ttk.Notebook(root)
notebook.pack(fill="both", expand=True)

notebook.bind("<B1-Motion>", reorder)

frame1 = ttk.Frame(notebook)
frame2 = ttk.Frame(notebook)

frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)

notebook.add(frame1, text='Stackoverflow')
notebook.add(frame2, text='Github')

root.mainloop()

输出:

在此处输入图像描述


推荐阅读