【问题标题】:How do I make a drop down menu on the title bar [duplicate]如何在标题栏上制作下拉菜单[重复]
【发布时间】:2019-12-08 17:59:51
【问题描述】:

我正在用 python 创建一个简单的 gui 应用程序。我知道 tkinter 中现有的下拉菜单选项,但我希望它出现在标题栏上。类似于您在 ubuntu18.04 中的 gnome-calculator 上可以找到的内容(在模式之间进行选择)。如何使用 python3 tkinter 实现这一点?

【问题讨论】:

  • 你必须阻止窗口管理器绘制一个标题栏并使用 tkinter 工具来伪造一个(如果你想到它,这就是 Gnome 应用程序通常所做的)。

标签: python python-3.x tkinter ubuntu-18.04


【解决方案1】:

您需要使用self.overrideredirect(True) 创建一个无框窗口,并在窗口顶部放置一个代表标题栏的小部件。将您的下拉列表放入该小部件中。简单例子:

import tkinter
from tkinter import ttk

class App(tkinter.Tk):

    def __init__(self):
        tkinter.Tk.__init__(self)
        self.title("Example")
        self.overrideredirect(True)
        self.title_bar = ttk.Combobox(values=["Mode 1", "Mode 2"])
        self.title_bar.set("Mode 1")
        self.title_bar.state(["readonly"])
        self.title_bar.pack()

app = App()
app.mainloop()

请注意,在此示例中,窗口在任务栏中不可见。见Tkinter, Windows: How to view window in windows task bar which has no title bar?

【讨论】:

  • 当我执行您的代码时,会引发以下错误:_tkinter.TclError: Invalid state name r 来自self.title_bar.state("readonly") 行——我在系统 Python 和 Anaconda 的行为中具有相同的行为。
  • @gboffi 谢谢你告诉我。我会修复代码。
  • 我试图执行你的代码,因为我担心你的窗口与 wm 交互不好,你检查了吗?
  • 现在您已经“修复”了您的代码,我可以看出您的窗口确实与窗口管理器交互不良。
  • 这只是一个小例子。它可以有更多的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多