Сделайте так, чтобы окно tkinter появилось поверх всех других окон - PullRequest
2 голосов
/ 17 декабря 2009
#!/usr/bin/env python
# Display window with toDisplayText and timeOut of the window.

from Tkinter import *

def showNotification(notificationTimeout, textToDisplay):

    ## Create main window
    root = Tk()
    Button(root, text=textToDisplay, activebackground="white", bg="white", command=lambda: root.destroy()).pack(side=LEFT)

    root.update_idletasks()
    # Remove window decorations
    root.overrideredirect(1)

    timeOut = int(notificationTimeout*1000) # Convert to ms from s

    ## Run appliction
    root.after(timeOut,root.destroy)
    root.mainloop()

Приведенный выше код создает уведомление с тайм-аутом. Однако на окнах - уведомление не появляется автоматически автоматически над всеми другими существующими окнами. Нужно нажать на кнопку уничтожения (текст) и сфокусировать ее в первый раз, после чего корневое окно будет отображаться над всеми остальными окнами.

Есть ли способ заставить уведомление автоматически появляться над всеми остальными окнами - на окнах?

Кажется, что он работает на Linux просто отлично (Ubuntu 9.10).

1 Ответ

7 голосов
/ 17 декабря 2009

Согласно этому сообщению вы сможете добавить следующее после root.overridedirect(1). Быстрый тест показывает, что он должен работать на вас.

root.wm_attributes("-topmost", 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...