gpt4 book ai didi

python - 我可以在 tkinter 中编辑不在同一功能中的标签框架吗?

转载 作者:行者123 更新时间:2023-12-04 10:44:43 24 4
gpt4 key购买 nike

我正在编写一个程序,通过单击按钮将允许用户打开一个文本文件。然后,还应该做的是将文本文件的内容打印到按钮的父窗口中的标签框架中。当我尝试这样做时,出现错误:NameError: name 'LabelFrame' is not defined。是否可以编辑不在同一功能中的标签框架?

编辑:
这是代码的一个片段。间距可能有点偏,抱歉。

import tkinter as tk
from tkinter import *
from tkinter import filedialog

def PerformTestScreen():
performTestScreen = Toplevel(window)
performTestScreen.geometry("400x225+10+560")
performTestScreen.title("Perform Test")

loadProg = Button(performTestScreen, text="Load Test", command=openPrevTest).grid(row = 0, column= 0, pady=10,padx=10, ipadx=30)

paramFrame = LabelFrame(performTestScreen, text="Parameters",padx=15, pady=30)
paramFrame.grid(row=1,column=0, pady=10, padx=10)
test = Label(paramFrame, text = "this is a test label").grid(row=0, column=0)

def openPrevTest():
fileName = filedialog.askopenfilename(filetypes = (("txt files", "*.txt"),("All Files", "*.*")))

print(fileName)
data = open(fileName).read()
print(data) # prints contents of text file to terminal
printParam = Label(performTestScreen.paramFrame, text=data)
printParam.grid(row=2,column=0)

window=tk.Tk()

btn=Button(window, text="Perform Test", command = PerformTestScreen).grid(row=1, column=1, pady=20, padx=20, ipadx=30)

window.title('Entry Screen')
window.geometry("400x160+10+10")
window.mainloop()

最佳答案

你需要在这里纠正一些事情。

  • 你的缩进不好。我看到 5 个空格而不是 4 个。
  • 你有一些代码行属于你的函数内部但在它之外。将您的代码移至问题时可能会出错,但现在它是一个问题。
  • 您需要将 labelFrame 传递给您的第二个函数才能使用它。除非您将其定义为全局变量,否则您不能简单地在其创建的函数之外调用顶层窗口变量名称。
  • 不要同时使用 from tkinter import *import tkinter as tk .我想说最好的就是使用 import tkinter as tk因为这有助于防止任何方法被错误覆盖。
  • 最后,我重写了一些名称和固定间距以遵循 PEP8 样式指南以获得更清晰的代码。

  • 这是您的代码清理了一些所需的更正。

    如果您有任何问题,请告诉我。
    import tkinter as tk
    from tkinter import filedialog


    def perform_test_screen():
    top = tk.Toplevel(window)
    top.geometry('400x225+10+560')
    top.title('Perform Test')
    param_frame = tk.LabelFrame(top, text='Parameters', padx=15, pady=30)
    param_frame.grid(row=1, column=0, pady=10, padx=10)
    tk.Button(top, text='Load Test',
    command=lambda: open_prev_test(param_frame)).grid(row=0, column=0, pady=10, padx=10, ipadx=30)
    tk.Label(param_frame, text='this is a test label').grid(row=0, column=0)


    def open_prev_test(param_frame):
    file_name = filedialog.askopenfilename(filetypes=(('txt files', '*.txt'), ('All Files', '*.*')))
    print(file_name)
    data = open(file_name).read()
    print(data) # prints contents of text file to terminal
    print_param = tk.Label(param_frame, text=data)
    print_param.grid(row=2, column=0)


    window = tk.Tk()
    window.title('Entry Screen')
    window.geometry('400x160+10+10')
    tk.Button(window, text='Perform Test', command=perform_test_screen).grid(row=1, column=1, pady=20, padx=20, ipadx=30)
    window.mainloop()

    关于python - 我可以在 tkinter 中编辑不在同一功能中的标签框架吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758498/

    24 4 0