main.py文件的function1函数中,我想从page1.py文件的Page1(tk.Frame)类导入textbox1textbox2.

我得到错误NameError: name 'textbox1' is not defined,因为textbox1textbox2没有正确导入.这就是我使用的代码.我做错了什么?如何解决?

main.py

import tkinter as tk
from tkinter import ttk
from tkinter import *

from page1 import Page1

root = tk.Tk()
root.geometry('480x320')

style = ttk.Style()
style.theme_use('default') 
style.configure('TNotebook', tabposition='wn', background='white', tabmargins=0)
style.configure('TNotebook.Tab', background='white', width=10, focuscolor='yellow', borderwidth=0)
style.map('TNotebook.Tab', background=[('selected', 'yellow')])

nb = ttk.Notebook(root)
nb.place(x=0, y=70)
page1 = Page1(nb, width=492, height=905)
nb.add(page1, text='Tab 1', compound='left')

def function1(textbox1, textbox2):

    val_1 = "example 1"
    textbox1.insert(0, val_1)

    val_2 = "example 1"
    textbox2.insert(0, val_2)

button1 = Button(root, text="Button", command= function1(textbox1, textbox2))
button1.place(x=0, y=0)

root.mainloop()

page1.py

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.font as tkFont
from tkinter import ttk

class Page1(tk.Frame):
    def __init__(self, master, **kw):
        super().__init__(master, **kw)

        self.textbox1 = ttk.Entry(self, width=7)
        self.textbox1.place(x=10, y=10)

        self.textbox2 = ttk.Entry(self, width=7)
        self.textbox2.place(x=10, y=40)

推荐答案

据我所知,要在main.py的函数1中访问textbox1 and textbox2,您应该通过使用self.textbox1self.textbox2使它们成为实例变量.

import tkinter as tk
from tkinter import ttk

class Page1(tk.Frame):
    def __init__(self, master, **kw):
        super().__init__(master, **kw)

        self.textbox1 = ttk.Entry(self, width=7)
        self.textbox1.place(x=10, y=10)

        self.textbox2 = ttk.Entry(self, width=7)
        self.textbox2.place(x=10, y=40)

main.py应该是这样的

import tkinter as tk
from tkinter import ttk
from tkinter import *
from page1 import Page1


def function1():
    val_1 = "example 1"
    page1.textbox1.delete(0, tk.END)  # Clear any existing text
    page1.textbox1.insert(0, val_1)

    val_2 = "example 2"
    page1.textbox2.delete(0, tk.END)  # Clear any existing text
    page1.textbox2.insert(0, val_2)

button1 = Button(root, text="Button", command=function1)
button1.place(x=0, y=0)

root.mainloop()

这应该可以解决这个问题.您能try 并希望这会有帮助吗?

Note:如果你只想编辑你的 playbook .

您可以为按钮添加此行,其中使用page1对象

button1 = Button(root, text="Button", command= function1(page1.textbox1, page1.textbox2))

我已经测试过了,它对我很有效:

enter image description here

Python相关问答推荐

如何让 turtle 通过点击和拖动来绘制?

大Pandas 胚胎中产生组合

pandas DataFrame GroupBy.diff函数的意外输出

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

Gekko:Spring-Mass系统的参数识别

海运图:调整行和列标签

通过Selenium从页面获取所有H2元素

Python库:可选地支持numpy类型,而不依赖于numpy

使用groupby Pandas的一些操作

删除字符串中第一次出现单词后的所有内容

如何使用使用来自其他列的值的公式更新一个rabrame列?

Polars Group by描述扩展

为什么t sns.barplot图例不显示所有值?'

应用指定的规则构建数组

比较两个有条件的数据帧并删除所有不合格的数据帧

如何从数据框列中提取特定部分并将该值填充到其他列中?

高效地计算数字数组中三行上三个点之间的Angular

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

正则表达式反向查找

Python:使用asyncio.StreamReader.readline()读取长行