class ExcelApp: def __init__(self, master): self.master = master master.title("CQ SMT BL 監控平臺-003無紙化點檢系統") master.state('zoomed') # 窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar) # 创建文件菜单及其子菜单 filemenu = tk.Menu(menubar, tearoff=0) filemenu.add_command(label="PA綫", command=lambda: self.load_excel(PA, "PA綫", "PA綫"),compound='left', image='', foreground='black', font=('Microsoft JhengHei', 12)) filemenu.add_command(label="PB綫", command=lambda: self.load_excel(PB, "PB綫", "PB綫"),compound='left', image='', foreground='black', font=('Microsoft JhengHei', 12)) filemenu.add_command(label="PC綫", command=lambda: self.load_excel(PC, "PC綫", "PC綫"),compound='left', image='', foreground='black', font=('Microsoft JhengHei', 12))
时间: 2024-03-29 08:35:26 浏览: 122
这段代码是用 Python 的 tkinter 模块创建了一个 Excel 应用程序的菜单栏,其中包含了文件菜单及其子菜单,分别对应 PA 綫、PB 綫、PC 綫三个选项。当用户点击其中一个选项时,会调用 load_excel 方法来加载相应的 Excel 文件。这里使用了 lambda 表达式来传递参数给 load_excel 方法,保证每个选项都能加载对应的 Excel 文件。另外,还设置了选项的图标、前景色和字体等属性。
相关问题
class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") master.state('zoomed')#窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar)修改這個窗口根據每臺電腦的分辨率來窗口最大化
可以通过获取屏幕分辨率来实现窗口最大化。可以使用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` 被销毁后出现的问题。
阅读全文