class MainWindow: def init(self, master): self.option_list = [] self.master = master master.title("點檢系統") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height))# 创建菜单栏 menu_bar = tk.Menu(master) # 创建“文件”菜单 file_menu = tk.Menu(menu_bar, tearoff=0) file_menu.add_command(label="5M點檢表", command=self.read_from_excel) file_menu.add_command(label="Router首件检查记录表", command=self.read_from_excel1) file_menu.add_command(label="板组作业首件检查记录表", command=self.read_from_excel2) # 创建“保养”菜单 maintenance_menu = tk.Menu(menu_bar, tearoff=0) maintenance_menu.add_command(label="日保養", command=self.read_from_excel3) maintenance_menu.add_command(label="周保養", command=self.read_from_excel4) # 创建“测试”菜单 test_menu = tk.Menu(menu_bar, tearoff=0) test_menu.add_command(label="人工測試站表單", command=self.read_from_excel5) test_menu.add_command(label="自動化測試站表單", command=self.read_from_excel6) # 将子菜单添加到菜单栏 menu_bar.add_cascade(label="首件確認表單", menu=file_menu) menu_bar.add_cascade(label="保养表單", menu=maintenance_menu) menu_bar.add_cascade(label="F/T表單", menu=test_menu) # 将菜单栏添加到主窗口 master.config(menu=menu_bar)在這個函數中將這個代碼中的菜單欄位添加儅用戶點擊某個菜單時將相應的名稱變個顔色,20分鐘后變回來
时间: 2023-07-16 18:14:11 浏览: 82
最终的mainwindowh文件如下。-QT实验设计PPT
可以在每个菜单项的command函数中添加一个标记,表示该菜单项被选中。然后使用定时器,在20分钟后将所有被选中的菜单项的颜色恢复为原来的颜色。
具体实现如下:
1. 在init函数中添加一个变量menu_items_dict,用于保存菜单项和它们的颜色状态:
```
self.menu_items_dict = {}
```
2. 在创建菜单项时,将菜单项和它们的颜色状态存储到menu_items_dict中:
```
file_menu.add_command(label="5M點檢表", command=lambda: self.read_from_excel('5M點檢表'))
self.menu_items_dict['5M點檢表'] = {'item': file_menu.entrycget(0, 'label'), 'color': 'black'}
file_menu.add_command(label="Router首件检查记录表", command=lambda: self.read_from_excel1('Router首件检查记录表'))
self.menu_items_dict['Router首件检查记录表'] = {'item': file_menu.entrycget(1, 'label'), 'color': 'black'}
file_menu.add_command(label="板组作业首件检查记录表", command=lambda: self.read_from_excel2('板组作业首件检查记录表'))
self.menu_items_dict['板组作业首件检查记录表'] = {'item': file_menu.entrycget(2, 'label'), 'color': 'black'}
```
3. 在每个菜单项的command函数中添加一个标记,表示该菜单项被选中,并将菜单项的颜色改变:
```
def read_from_excel(self, name):
# 标记菜单项被选中
self.menu_items_dict[name]['selected'] = True
# 改变菜单项颜色
self.menu_items_dict[name]['color'] = 'red'
self.update_menu_colors()
# 其他代码
def read_from_excel1(self, name):
# 标记菜单项被选中
self.menu_items_dict[name]['selected'] = True
# 改变菜单项颜色
self.menu_items_dict[name]['color'] = 'red'
self.update_menu_colors()
# 其他代码
def read_from_excel2(self, name):
# 标记菜单项被选中
self.menu_items_dict[name]['selected'] = True
# 改变菜单项颜色
self.menu_items_dict[name]['color'] = 'red'
self.update_menu_colors()
# 其他代码
```
4. 添加一个定时器,每隔20分钟检查一次被选中的菜单项,将它们的颜色恢复为原来的颜色:
```
def update_menu_colors(self):
# 更新菜单项颜色
for name, menu_item in self.menu_items_dict.items():
if 'selected' in menu_item and menu_item['selected']:
self.menu_items_dict[name]['selected'] = False
self.master.after(20 * 60 * 1000, self.restore_menu_color, name)
self.master.nametowidget(menu_item['item']).config(fg=menu_item['color'])
def restore_menu_color(self, name):
self.menu_items_dict[name]['color'] = 'black'
self.update_menu_colors()
```
阅读全文