python 从另一个文件调用导航
python call navigation from another file
如何从另一个 python 文件中发生的事件导航到第二页?
这是我的图形用户界面代码:
import tkinter as tk
from tkinter import *
import openf
class Page(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
def show(self):
self.lift()
class Page1(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="first page")
label.pack(side="top", fill="both", expand=True)
class Page2(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
p1 = Page1(self)
p2 = Page2(self)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p1.show()
if __name__ == "__main__":
root = tk.Tk()
main = MainView(root)
root.resizable(0, 0)
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=openf.openfiledialog)
filemenu.add_command(label="Save", command=root.quit)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
main.pack(side="top", fill="both", expand=True)
root.wm_geometry("500x600")
我不需要使用按钮进行导航。我想在另一个py文件中成功执行一个函数时导航到第二页。
我必须将 main.py 导入到另一个文件,但如何从那里调用框架导航?
openf.py
from tkinter import filedialog
def openfiledialog():
global of
of = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=[("archives", "*.zip")])
openfile())
def openfile():
with zipfile.ZipFile(of, "r") as f:
# navigate gui to second page from here
您的某个页面 "navigate to" 的方法似乎是调用其上的 show
方法。因此,您只需引用该页面即可导航至该页面。
我建议在 MainView
上创建一个可用于导航到页面的方法。然后您可以传递一个符号名称,它会使用该名称来确定要显示的页面。
例如:
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.pages = {
"p1": Page1(self),
"p2": Page2(self),
}
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
self.pages["p1"].place(in_=container, x=0, y=0, relwidth=1, relheight=1)
self.pages["p2"].place(in_=container, x=0, y=0, relwidth=1, relheight=1)
self.show("p1")
def show(self, page_name):
page = self.pages[page_name]
page.show()
完成后,您只需将 main
传递给您希望导航到其他页面的函数。
例如,首先将 main
传递给另一个文件的 openfiledialog
方法:
...
filemenu.add_command(
label="Open",
command=lambda: openf.openfiledialog(main)
)
...
然后在 openfiledialog
中,使用该引用显示框架:
def openfiledialog(main):
...
openfile(main)
def openfile(main):
with zipfile.ZipFile(of, "r") as f:
main.show("p1")
如何从另一个 python 文件中发生的事件导航到第二页? 这是我的图形用户界面代码:
import tkinter as tk
from tkinter import *
import openf
class Page(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
def show(self):
self.lift()
class Page1(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="first page")
label.pack(side="top", fill="both", expand=True)
class Page2(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
p1 = Page1(self)
p2 = Page2(self)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p1.show()
if __name__ == "__main__":
root = tk.Tk()
main = MainView(root)
root.resizable(0, 0)
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=openf.openfiledialog)
filemenu.add_command(label="Save", command=root.quit)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
main.pack(side="top", fill="both", expand=True)
root.wm_geometry("500x600")
我不需要使用按钮进行导航。我想在另一个py文件中成功执行一个函数时导航到第二页。 我必须将 main.py 导入到另一个文件,但如何从那里调用框架导航?
openf.py
from tkinter import filedialog
def openfiledialog():
global of
of = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=[("archives", "*.zip")])
openfile())
def openfile():
with zipfile.ZipFile(of, "r") as f:
# navigate gui to second page from here
您的某个页面 "navigate to" 的方法似乎是调用其上的 show
方法。因此,您只需引用该页面即可导航至该页面。
我建议在 MainView
上创建一个可用于导航到页面的方法。然后您可以传递一个符号名称,它会使用该名称来确定要显示的页面。
例如:
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.pages = {
"p1": Page1(self),
"p2": Page2(self),
}
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
self.pages["p1"].place(in_=container, x=0, y=0, relwidth=1, relheight=1)
self.pages["p2"].place(in_=container, x=0, y=0, relwidth=1, relheight=1)
self.show("p1")
def show(self, page_name):
page = self.pages[page_name]
page.show()
完成后,您只需将 main
传递给您希望导航到其他页面的函数。
例如,首先将 main
传递给另一个文件的 openfiledialog
方法:
...
filemenu.add_command(
label="Open",
command=lambda: openf.openfiledialog(main)
)
...
然后在 openfiledialog
中,使用该引用显示框架:
def openfiledialog(main):
...
openfile(main)
def openfile(main):
with zipfile.ZipFile(of, "r") as f:
main.show("p1")