如何在多个文件中创建不同的Tkinter帧?

2024-10-01 00:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Tkinter上创建一个GUI,当按下按钮时需要打开或关闭窗口,我更希望每个窗口都在自己的文件中。我尝试用下面的三个文件创建一个非常简单的示例。第一个窗口应该有一个按钮,按下该按钮时,关闭当前窗口并打开下一个窗口。我目前遇到了一个问题,窗口是创建的,但按钮不是。我该怎么解决这个问题

主.py

from MyTkWindow import *

myWindow = MyTkWindow()
myWindow.start()

MyTkWindow.py公司

import tkinter as tk
from NextFrame import *

class MyTkWindow(tk.Frame):
    def __init__(self, parent=None):
        tk.Frame.__init__(self)
        nextWin = NextWindow()
        NextScreen = tk.Button(self, text="Next", command=lambda:[self.destroy(), nextWin.start()])
        NextScreen.pack()

    def start(self):
        self.mainloop()

下一帧.py

import tkinter as tk

class NextWindow(tk.Frame):
    def __init__(self, parent=None):
        tk.Frame.__init__(self)
        Leave = tk.Button(self, text="Quit", command=lambda: self.destroy())
        Leave.pack()

    def start(self):
        self.mainloop()

Tags: frompyimportselfinittkinterdefas
1条回答
网友
1楼 · 发布于 2024-10-01 00:31:41

我得到这个工作与指示的变化。主要问题是由于没有调用正在创建的窗口/框架的pack()方法

main.py

from MyTkWindow import *

myWindow = MyTkWindow()
myWindow.pack()  # ADDED

myWindow.start()

MyTkWindow.py

import tkinter as tk
from NextFrame import *

class MyTkWindow(tk.Frame):
    def __init__(self, parent=None):
        tk.Frame.__init__(self, parent)  # ADDED parent argument.
        nextWin = NextWindow()
        NextScreen = tk.Button(self, text="Next",
                               command=lambda: [self.destroy(),
                                                nextWin.pack(),  # ADDED
                                                nextWin.start()])
        NextScreen.pack()

    def start(self):
        self.mainloop()

NextFrame.py

import tkinter as tk

class NextWindow(tk.Frame):
    def __init__(self, parent=None):
        tk.Frame.__init__(self, parent)  # ADDED parent argument.
        Leave = tk.Button(self, text="Quit",
                          command=lambda: self.destroy())
        Leave.pack()

    def start(self):
        self.mainloop()

建议:阅读并开始遵循PEP 8 - Style Guide for Python Code,因为它将使您的代码更易于理解和维护。特别是Naming Conventions部分,特别是关于类、变量和模块文件名

相关问题 更多 >