嘿,我正在製作一個程序,當我輸入錯誤的密碼時,使用我的網絡攝像頭拍照。該計劃將開放,我希望它不可關閉。 我需要知道如何使用tkinter使窗口不可關閉。使用tkinter的不可關閉窗口
回答
你可以嘗試@abarnert建議的所有事情,但我認爲最簡單的方法就是忽略關閉事件。
這裏有一個具體的例子:
import Tkinter as tk
import tkMessageBox as messagebox
root = tk.Tk()
def on_closing():
if messagebox.askokcancel("Quit", "Do you want to quit?"):
root.destroy()
root.protocol("WM_DELETE_WINDOW", on_closing)
root.mainloop()
(適用於Windows編輯的代碼)
因此改變on_closing()
到 def on_closing(): pass
和使其不受限制奧薩卜萊。我試過Alt + F4,關閉按鈕,從Windows任務欄關閉它,都無濟於事。我能夠殺死它的唯一方法是使用任務管理器。
Tkinter沒有任何辦法直接做到這一點。但它確實有一些可能足夠好,也可能是太矯枉過正:在overrideredirect
標誌:
如果不爲零,這防止了窗口管理器,從裝飾窗口。換句話說,窗口不會有標題或邊框,並且它不能通過普通的方式移動或關閉。
這並不是最新的;它可能實際上在某些平臺上有標題或邊界...但它不會被關閉。
這是很容易使用:只需做root.overrideredirect(True)
(或者,如果你想要它做的不同Toplevel
窗口,而不是你的根,window.overrideredirect(True)
)。
但是請注意,它不能是搬遷或停業,不僅僅是它無法關閉。 (如果需要,它也不能調整大小。)
所以,你可以做的唯一事情就是設置標誌,然後綁定鼠標按鈕事件來處理手動移動。例如,在窗口的__init__
方法:
self.overrideredirect(True) # if this is a Toplevel
#self.parent.overrideredirect(True) # if this is a Frame on root
self.bind('<ButtonPress-1>', self.move_start)
self.bind('<ButtonRelease-1>', self.move_end)
self.bind('<B1-Motion>', self.move_move)
然後:
def move_start(self, event):
self.startx, self.starty = event.x, event.y
def move_stop(self, event):
self.move_move(event)
def move_move(self, event):
x = self.winfo_x() + event.x - self.startx
y = self.winfo_y() + event.y - self.starty
self.geometry("+%s+%s" % (x, y))
很顯然,如果你想在窗口內的任何部件接受的點擊,你可能不希望使整個窗口成爲拖動區域。實際上,即使沒有任何可點擊的內容,您可能也不想讓整個窗口成爲拖動區域,因爲這不是真正遵循Mac或Windows人機界面指南。您可以僞造一個抓地區域 - 標題欄,窗口周圍的邊框等 - 例如,只需添加一個Label
固定到您想要抓住的側面,並且只需要在該處添加bind
,或者創建一個從主窗口插入「子」窗口,竊取bind
。但這永遠不會像「本地」窗口。
如果您確實需要一個本機窗口,但關閉窗口(Windows右上角的X
,Mac左上角的紅點等)被禁用或丟失(並且打開Windows,窗口菜單上的「關閉」項禁用,Alt + F4等等,對X11也是如此......)......據我所知,在Tkinter中沒有跨平臺的方式來做到這一點。您必須爲每個平臺編寫代碼,以獲取底層本機窗口對象,併爲它們執行本機窗口事物。此時,您可能想要使用比Tkinter更強大的窗口庫,例如,我相信Qt,Gtk +和wx都有更簡單的創建常規窗口的方法,但禁用關閉框。
- 1. 關閉tkinter的窗口
- 2. 關閉線程Tkinter窗口
- 3. 如何關閉Tkinter窗口
- 4. 關閉一個Toplevel的窗口的Tkinter
- 5. 關閉Tkinter窗口的功能
- 6. Python Tkinter - 關閉對話框而不關閉主窗口
- 7. 如何使SDL2窗口不可關閉?
- 8. 如何使TideSDK窗口不可關閉?
- 9. SWT使不可能關閉org.eclipse.swt.widgets.Dialog窗口
- 10. 只關閉一個tkinter窗口
- 11. Tkinter窗口在運行時關閉
- 12. 從python的tkinter的頂層窗口關閉主窗口
- 13. 無關閉窗口的關閉窗口
- 14. 使用子窗口關閉父窗口。
- 15. 關閉tkinter窗口以及messagebox錯誤窗口
- 16. 當matplotlib窗口打開時關閉tkinter進度條窗口
- 17. 使用wmctrl關閉窗口
- 18. 使用pyatspi關閉窗口
- 19. Python 2.71.11 Tkinter窗口不關閉「應用程序沒有響應」
- 20. 使用Tkinter iwant打開第二個窗口,然後關閉前一個窗口
- 21. 如何在使用後關閉tkinter按鈕窗口?
- 22. 「關閉窗口」按鈕,使用Tkinter的時候不會工作+ GObject的
- 23. 關閉主窗口的Tkinter結合的關鍵
- 24. 關閉後如何使窗口可見?
- 25. 關閉窗口後關閉可可應用程序
- 26. 關閉可可中的主窗口?
- 27. 關閉窗口
- 28. 窗口不關閉GLFW
- 29. PyQt窗口不關閉
- 30. 模態窗口不關閉
如果你想讓它成爲_cos_ able,它必須是一個_sin_ed應用程序。 – TigerhawkT3
@ TigerhawkT3:堅持這個問題,不要切線。 :P – abarnert
無論如何,你的意思是「不可關閉」(假設你的意思是「不可關閉」)?你的意思是你不想要關閉盒子(Windows上右上角的X,Mac上左上角的紅點等)?還是比這更多? – abarnert