class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") master.state('zoomed')#窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar)修改這個窗口根據每臺電腦的分辨率來窗口最大化
时间: 2024-01-10 13:02:09 浏览: 159
可以通过获取屏幕分辨率来实现窗口最大化。可以使用tkinter库中的`winfo_screenwidth()`和`winfo_screenheight()`方法来获取屏幕分辨率,并将窗口大小设置为屏幕大小。下面是修改后的代码:
```
import tkinter as tk
class ExcelApp:
def __init__(self, master):
self.master = master
master.title("Excel App")
master.geometry('{}x{}'.format(master.winfo_screenwidth(), master.winfo_screenheight())) # 获取屏幕分辨率并设置窗口大小
# 创建菜单栏
menubar = tk.Menu(master)
master.config(menu=menubar)
```
这样,无论在哪台电脑上运行,窗口都会自动最大化。
相关问题
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") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar)設置這個窗口中文本標簽根據窗口大小變動
您可以使用Tkinter中的`place`方法来设置窗口中的文本标签根据窗口大小变动。具体实现方式如下:
1. 创建文本标签
```python
label = tk.Label(master, text="Hello World")
```
2. 使用place方法设置文本标签的位置和大小,并绑定窗口大小变化事件
```python
def resize(event):
label.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
label.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
master.bind('<Configure>', resize)
```
在上面的代码中,`place`方法中的`relx`和`rely`参数用于设置文本标签在窗口中的相对位置,`anchor`参数用于设置文本标签的锚点。`bind`方法用于将窗口大小变化事件与`resize`函数绑定,当窗口大小变化时,会自动调用`resize`函数重新设置文本标签的位置和大小。
注意:在使用`place`方法时,不要再使用窗口的其他布局管理器,否则可能会产生布局冲突。
阅读全文