class ExcelApp: def init(self, master): self.master = master master.title("Excel App") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')在這個窗口創建一個退出按鈕用來關閉這個窗口的代碼
时间: 2024-02-09 17:08:24 浏览: 26
这段代码缺少创建退出按钮的代码,你可以使用以下代码创建一个退出按钮:
```
exit_button = tk.Button(master, text="Exit", command=master.quit)
exit_button.pack()
```
这将在 Excel 应用程序窗口中创建一个名为 "Exit" 的按钮,并将其与 `master.quit` 方法关联,以便在单击该按钮时关闭窗口。
相关问题
class LoginWindow: def __init__(self, master): self.master = master self.master.title("Login Window") self.master.geometry("300x250") self.master.resizable(0, 0) self.username = tk.StringVar() self.password = tk.StringVar()class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化# 查询窗口 class QueryWindow: def __init__(self, master): self.master = master master.title("查詢窗口") # 获取屏幕的宽度和高度 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化if __name__ == '__main__': root = tk.Tk() app = LoginWindow(root) root.mainloop()這個代碼中我有三個窗口,第一個銷毀后第三個就報self.tk.call( _tkinter.TclError: can't invoke "toplevel" command: application has been destroyed怎麽解決
你的问题可能是因为你在第三个窗口中使用了 `root`,而 `root` 在第一个窗口销毁后已经被销毁了。你可以在第三个窗口中使用 `master`,即 `QueryWindow` 类的 `__init__` 方法中的 `master`,这个变量是当前窗口的主 `Tk()` 对象。修改后的代码如下:
```
class LoginWindow:
def __init__(self, master):
self.master = master
self.master.title("Login Window")
self.master.geometry("300x250")
self.master.resizable(0, 0)
self.username = tk.StringVar()
self.password = tk.StringVar()
class ExcelApp:
def __init__(self, master):
self.master = master
master.title("Excel App")
# 获取屏幕的宽度和高度
screen_width = master.winfo_screenwidth()
screen_height = master.winfo_screenheight()
# 将窗口的大小设置为屏幕的大小
master.geometry("%dx%d" % (screen_width, screen_height))
master.state('zoomed') # 窗口最大化
# 查询窗口
class QueryWindow:
def __init__(self, master):
self.master = master
self.master.title("查詢窗口")
# 获取屏幕的宽度和高度
screen_width = self.master.winfo_screenwidth()
screen_height = self.master.winfo_screenheight()
# 将窗口的大小设置为屏幕的大小
self.master.geometry("%dx%d" % (screen_width, screen_height))
self.master.state('zoomed') # 窗口最大化
if __name__ == '__main__':
root = tk.Tk()
app = LoginWindow(root)
root.mainloop()
```
这样,你就可以在第三个窗口中使用 `self.master`(也可以用 `master`)代替 `root`,避免了 `root` 被销毁后出现的问题。
class ExcelApp: def init(self, master): self.master = master master.title("Excel App")ri1 = datetime.datetime.now().strftime('%H:%M:%S')self.combobox2 = tk.ttk.Combobox(input_frame, values=[ri1]) self.combobox2.pack(side=tk.LEFT, padx=2, pady=2) self.combobox2.current(0)這個代碼中需要修改獲取的時間需要實時更新的結果輸入在self.combobox2下拉框中
您可以使用`after`方法来实现定时更新时间并更新下拉框中的值。您需要将以下代码添加到`ExcelApp`类中的`__init__`方法中:
```python
# 定义一个函数来更新时间和下拉框的值
def update_time():
# 获取当前时间
current_time = datetime.datetime.now().strftime('%H:%M:%S')
# 更新下拉框的值
self.combobox2['values'] = [current_time]
# 重新设置选中的值
self.combobox2.current(0)
# 每隔1秒钟更新一次时间和下拉框的值
self.master.after(1000, update_time)
# 启动更新时间的函数
update_time()
```
这将在创建`ExcelApp`对象时启动一个函数,该函数将每隔1秒钟更新一次当前时间并更新下拉框中的值。
阅读全文