[英]Non-standard windows with Tkinter?
有沒有辦法用Tkinter創建非標准窗口? 我想在屏幕上放些浮動圖像,並在其中放置Tkinter小部件。 想一些類似Mac的Growl,iPad上的Siri,Mac OS的音量/亮度更改邊框等。如果無法做到這一點,是否有辦法擺脫帶有標題的窗口頂部欄並關閉/最小化/ resize按鈕,並要求腳本完成(或使用修飾符Q鍵)以關閉?
wm_overrideredirect將刪除標准窗口邊框。 您仍然會被矩形窗口困住。 您可以使用wm_attributes調整窗口的透明度(查找alpha
屬性),盡管這僅適用於Windows和Mac。
已經嘗試過使用tcl / tk整形窗口,盡管可能需要編譯一些代碼,但是您也許可以使用Tkinter來使用它。 請參閱tcl'ers Wiki上的Managed and Shape 頂層 。
是的,你可以! 您可以使用
app.overrideredirect(True)
其中app = Tk()
從這里開始,您陷入了一個不是頂層的窗口; 它也沒有任務欄位置; 為了解決這個問題,我們可以使用: app.attributes('-topmost', 1)
但即使現在您也只有一個矩形; 您將需要創建一個自定義標題欄; 這只是一個帶有標題,退出,最小化按鈕等的框架。
要從標題欄移動窗口,我們使用:
def get_pos(event):
xwin = app.winfo_x()
ywin = app.winfo_y()
startx = event.x_root
starty = event.y_root
ywin = ywin - starty
xwin = xwin - startx
def move_window(event):
app.geometry("400x400" + '+{0}+{1}'.format(event.x_root + xwin, event.y_root + ywin))
startx = event.x_root
starty = event.y_root
app.TopFrame.bind('<B1-Motion>', move_window)
app.TopFrame.bind('<Button-1>', get_pos)
其中TopFrame是標題欄。 這種方法看起來過於復雜,但是它允許條形圖直接在鼠標上移動而無需移動到角落。
回答您的后一個問題:制作浮動對象的可能性很高; 采用:
app.overrideredirect(True)
app.image = tk.PhotoImage(file='image.GIF')
image = Label(root, image=app.image, bg='white')
app.attributes("-transparentcolor", "white")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.