【发布时间】:2021-12-25 05:31:05
【问题描述】:
我在一个文件中有两个类,一个用于主 gui,另一个用于小设置 gui。
from tkinter import *
import tkinter as tk
class Class1:
def __init__(self, mainwindow):
self.mainwindow = mainwindow
self.mainwindow.title("Assistant")
self.mainwindow.geometry("550x400")
# -- MenuBar --
MenuBar = Menu(self.mainwindow)
# FirstMenu
FirstMenu = Menu(MenuBar, tearoff=False)
FirstMenu.add_command(label="Settings", command=self.OpenInfo)
self.mainwindow.config(menu=MenuBar)
def OpenInfo(self):
self.OpenSettings = Toplevel(self.mainwindow)
self.app = SettingsGUI(self.OpenSettings)
# -- MISSING CODE HERE --
class SettingsGUI:
def __init__(self, settingswindow):
self.settingswindow = settingswindow
self.settingswindow.title("Settings")
self.settingswindow.geometry("300x250")
self.settingswindow.grab_set()
def close_windows(self):
self.settingswindow.release_set()
self.settingswindow.destroy()
SettingsFrame = Frame(self.settingswindow, bg="yellow")
SettingsFrame.pack(fill=tk.BOTH, side=TOP, expand=True)
SettingsTab = ttk.Notebook(SettingsTabFrame)
PreferencesTab = ttk.Frame(SettingsTab)
SettingsTab.add(PreferencesTab, text='Preferences')
AppearanceTab = ttk.Frame(SettingsTab)
SettingsTab.add(AppearanceTab, text='Appearance')
InfoTab = ttk.Frame(SettingsTab)
SettingsTab.add(InfoTab, text='Info')
def main():
mainwindow = tk.Tk()
app = Class1(mainwindow)
mainwindow.mainloop()
if __name__ == '__main__':
main()
我不知道要在OpenInfo 命令中添加什么,不仅可以打开SettingsGUI,还可以打开@987654325 的特定选项卡(第三个,InfoTab) @.
我知道 ttk Notebook 的 select 功能,但我真的不知道如何从一个类到另一个类。
--------------- 编辑:--------------- ------------
我在一个文件中有两个类,一个用于主 gui,另一个用于小设置 gui。
import tkinter as tk
from tkinter import ttk
class AssistantGUI:
def __init__(self, mainwindow):
self.mainwindow = mainwindow
self.mainwindow.title("Assistant")
self.mainwindow.geometry("550x400")
# -- MenuBar --
MenuBar = tk.Menu(self.mainwindow)
# FirstMenu
FirstMenu = tk.Menu(MenuBar, tearoff = False)
# added this
MenuBar.add_cascade(label = "Open", menu = FirstMenu)
FirstMenu.add_command(label = "Settings", command = self.OpenSettings)
FirstMenu.add_command(label = "Info", command = self.OpenInfo)
self.mainwindow.config(menu=MenuBar)
def OpenSettings(self):
self.OpenSettings = tk.Toplevel(self.mainwindow)
self.app = SettingsGUI(self.OpenSettings)
def OpenInfo(self):
self.OpenSettings = tk.Toplevel(self.mainwindow)
self.app = SettingsGUI(self.OpenSettings)
# -- MISSING CODE HERE TO SELECT INFOTAB --
class SettingsGUI:
def __init__(self, settingswindow):
self.settingswindow = settingswindow
self.settingswindow.title("Settings")
self.settingswindow.geometry("300x250")
self.settingswindow.grab_set()
def close_windows(self):
self.settingswindow.destroy()
SettingsFrame = tk.Frame(self.settingswindow, bg = "yellow")
SettingsFrame.pack(fill = tk.BOTH, side = tk.TOP, expand = True)
# changed this from SettingsTabFrame
SettingsTab = ttk.Notebook(SettingsFrame)
PreferencesTab = ttk.Frame(SettingsTab)
SettingsTab.add(PreferencesTab, text = 'Preferences')
AppearanceTab = ttk.Frame(SettingsTab)
SettingsTab.add(AppearanceTab, text = 'Appearance')
InfoTab = ttk.Frame(SettingsTab)
SettingsTab.add(InfoTab, text = 'Info')
# added these
SettingsTab.pack(fill = tk.BOTH, side = tk.TOP, expand = True)
# Force focus on settingswindow
SettingsTab.focus_force()
def main():
mainwindow = tk.Tk()
app = AssistantGUI(mainwindow)
mainwindow.mainloop()
if __name__ == '__main__':
main()
我不知道要在OpenInfo 命令中添加什么,不仅可以打开SettingsGUI,还可以打开@987654330 的特定选项卡(第三个,InfoTab) @.
我知道 ttk Notebook 的 select 功能,但我真的不知道如何从一个类到另一个类。
【问题讨论】:
标签: python user-interface tkinter ttk