![](/img/trans.png)
[英]Tkinter how to popout a Toplevel window by cursor movement instead of button click
[英]Tkinter, show Calendar in Toplevel window on button click
我刪除了有關此問題的先前問題,以簡化我的問題並使問題更清楚地傳達。 我有一個包含多個類的項目,並且我想在單擊按鈕后將日歷顯示在新窗口中。 我目前正在使用此 Calendar腳本,但總體腳本內部進行了較小的更改。 我在Calendar腳本的第一部分中將Frame更改為Toplevel,如下所示:
class Calendar(tk.Toplevel):
def __init__(self, parent, **kw):
Toplevel.__init__(self, parent, **kw)
現在,它的確與其他腳本一起在“頂級”窗口中創建了“日歷”,但是在程序啟動后立即進行了創建。 我想讓它顯示在以后用戶調用它時。
例:
class Application(tk.Tk): # tk.Tk creates main window
def __init__(self):
tk.Tk.__init__(self)
self.title("T")
self.geometry('550x320')#x,y
self.create_options()
self.calendar = Calendar(self)
def create_options(self):
self.widgets = tk.Frame(self)
tk.Button(self,
text = "...", command=self.show_Calendar
).place(x=525, y=130)
這將稱為:
def show_Calendar(self):
'''shows calendar'''
toplevel = Toplevel()
toplevel.Calendar.place(x=0, y=0)
該按鈕確實創建了一個窗口,但其中沒有任何內容。 使此日歷僅在單擊按鈕時出現的窗口中顯示的最佳方法是什么?
self.calendar = Calendar(self)
將此行放在您的應用程序init
中將在創建應用程序的同時創建它。 您可能希望將其移動到show_Calendar
方法中。
def show_Calendar(self):
'''shows calendar'''
toplevel = Toplevel()
toplevel.Calendar.place(x=0, y=0)
toplevel = Toplevel()
在這里沒有任何意義。 您正在創建一個空白的Toplevel
並將其設置為局部變量。 這Toplevel
是不涉及任何方式您的日歷。
在Calendar腳本中,您確保Calendar類繼承自Toplevel
,因此, Toplevel
創建Calendar時,它將被附加到其自己的Toplevel
。
def show_Calendar(self):
'''shows calendar'''
self.calendar = Calendar(self)
在刪除之前,我一直在查看您的上一個問題,如果您還想在用戶更改焦點時刪除日歷,則應在此處查看“ 事件和綁定” ,尤其是<FocusOut>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.