我用tkinter编写代码,整个代码在一个文件中,但我成功地将其拆分为多个文件。有main.py
和MyFirstpanel.py
两个文件。当我点击按钮,它运行MyFirstPanel.py
文件。当我点击按钮,然后它回到main.py
。但我还是想去MyFirstPanel.py
文件它给了我一个错误。
Error
myFirstPanel = MyFirstPanel(self.root)
NameError: name 'MyFirstPanel' is not defined
Exception in Tkinter callback
我的代码是这样的
main.py
from tkinter import *
from MyFirstPanel import *
class MyTkWindow:
def __init__(self, root):
self.root = root # Makes the window
self.mainFrame = Frame(self.root, width=500, height=500)
self.mainFrame.grid(row=0, column=0, padx=10, pady=2)
self.user_login_btn = Button(self.mainFrame, text='Go To First Frame', relief='solid', font=('times new roman', 11),
height=1, width=6, command=self.gotofirstpanel)
self.user_login_btn.grid(row=2, column=0, columnspan=30, sticky=(N, S, E, W))
def gotofirstpanel(self):
self.mainFrame.destroy()
myFirstPanel = MyFirstPanel(self.root)
myFirstPanel.start()
def start(self):
self.root.mainloop()
if __name__ == '__main__':
root = Tk()
myWindow = MyTkWindow(root)
myWindow.start()
MyFirstPanel.py
from tkinter import *
from main import *
class MyFirstPanel:
def __init__(self, root):
self.root = root
self.mainFrame = Frame(self.root, width=500, height=500)
self.mainFrame.grid(row=0, column=0, padx=10, pady=2)
self.user_login_btn = Button(self.mainFrame, text='First Panels', relief='solid', font=('times new roman', 15),
height=1, width=6, command=self.gotomainpanel)
self.user_login_btn.grid(row=2, column=0, columnspan=10, sticky=(N, S, E, W))
def gotomainpanel(self):
self.mainFrame.destroy()
myTkWindow = MyTkWindow(self.root)
myTkWindow.start()
self.root.destroy()
def start(self):
self.root.mainloop()
这里我将from MyFirstPanel import *
更改为import MyFirstPanel
,将MyFirstPanel(self.root)
更改为MyFirstPanel.MyFirstPanel(self.root)
main.py
from tkinter import *
import MyFirstPanel
class MyTkWindow:
def __init__(self, root):
self.root = root # Makes the window
self.mainFrame = Frame(self.root, width=500, height=500)
self.mainFrame.grid(row=0, column=0, padx=10, pady=2)
self.user_login_btn = Button(self.mainFrame, text='Go To First Frame', relief='solid', font=('times new roman', 11),
height=1, width=6, command=self.gotofirstpanel)
self.user_login_btn.grid(row=2, column=0, columnspan=30, sticky=(N, S, E, W))
def gotofirstpanel(self):
self.mainFrame.destroy()
myFirstPanel = MyFirstPanel.MyFirstPanel(self.root)
myFirstPanel.start()
def start(self):
self.root.mainloop()
if __name__ == '__main__':
root = Tk()
myWindow = MyTkWindow(root)
myWindow.start()