在(自定义)TkInter 和 Python 中更改选项菜单按钮位置

问题描述 投票:0回答:1

我需要做一个这样的按钮:

Button with a option menu that drop

像丝带的东西。我正在使用 CustomTkInter,但我们可以在普通 TkInter 上做的所有事情我都可以在 CustomTkInter 上做。我有一个名为 CTkOptionMenu 的小部件,他做我想做的事,但我想用下拉箭头更改他的按钮,并在主文本上放置一个图像,如功能区按钮。

我的问题是,有一个表格可以创建我自己的选项菜单小部件,或者我可以将下拉按钮和图像放在 customTkInter 的 OptionMenu 或 TkInter 中?

已编辑 11 月 4 日 - 上午 11 点

我发现有一个名为 MenuButton 的小部件,他看起来像我需要的小部件,但在代码中说:

"""Menubutton widget, obsolete since Tk8.0."""

我可以毫无问题地使用和设计他,或者有更好的解决方案?

python-3.x tkinter ribbon customtkinter tkinter.optionmenu
1个回答
0
投票

我不认为我理解你的所有问题,但这个例子将使用 PIL 在 tkinter 中创建一个工具栏

from PIL import Image, ImageTk
import tkinter as tk


class MainWindow(tk.Frame):

    def __init__(self, root: tk.Tk):
        super().__init__()
        self.root = root
        self.fileMenu: tk.Menu

        self.initUI()

    def initUI(self):
        self.root.title("Toolbar")

        toolbar = tk.Frame(self.root, bd=2, relief=tk.RAISED)
        img = Image.open("paste.png")
        tk_img = ImageTk.PhotoImage(img)

        paste_button = tk.Button(toolbar, image=tk_img, relief=tk.FLAT, command=self._paste_clipboard)
        paste_button.image = tk_img
        paste_button.pack(side=tk.LEFT, padx=1, pady=1)

        toolbar.pack(side=tk.TOP, fill=tk.X)
        self.pack()

    def _paste_clipboard(self):
        # insert code to paste data here
        print('paste clipboard')


if __name__ == '__main__':
    root = tk.Tk()
    root.geometry("300x200")
    main_window = MainWindow(root)
    root.mainloop()

© www.soinside.com 2019 - 2024. All rights reserved.