如何在多个文件中拆分代码和工作



我用tkinter编写代码,整个代码在一个文件中,但我成功地将其拆分为多个文件。有main.pyMyFirstpanel.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()

最新更新