我对编程比较陌生,我注意到,随着代码的增长,在2个文件(设置和主文件)中对所有内容进行编码会变得非常混乱。然而,当我将代码拆分成许多文件时,我遇到了无法导入fileB的问题。py简介文件a。py并在我的文件B中使用文件A中的变量或小部件(我得到未定义的名称错误)。
我将tkinter用于UI,因此我的主文件是tk循环(main.py)。每个按钮都引用不同文件中的函数。它运行良好,直到我的函数包含按钮状态或输入文本。
这个例子是关于tkinter的,但是我在很多情况下遇到这个问题,因为我相信我的代码结构。
import FileB
import tkinter
from tkinter import Checkbutton, Tk, Entry, BooleanVar
root = Tk() # initialize blank window
root.geometry("500x500")
# text entry
E1 = Entry(root, bd=5, width = 8)
E1.grid(row=0, column=1)
# Checkbox
CB_var = BooleanVar()
CB = Checkbutton(root, text="Get text", variable=CB_var, command=FileB.get_text() )
CB.grid(row=0, column=2)
root.mainloop()
def get_text():
if CB.var == True:
entry_text = E1.get()
E1.config(state=DISABLED)
print(entry_text)
E1.delete(0, END)
elif CB.var == False:
E1.config(state=NORMAL)
print("Checkbox not selected")
由于E1是在调用我的函数之前定义的,我希望我的函数能够更改E1的状态,获取其文本并清空文本;好像这个功能是我的主要功能。皮耶。
实际输出是未定义的名称错误,因为E1不是我的文件B中的变量。
由于FileB
由main导入。py
,FileB
无法访问main中的对象。py
。您需要在main中传递对象。py
通过功能参数。
建议将您的小部件放入一个类中,并将该类的实例传递给FileB。get_text()
函数。
文件A(main.py)
from tkinter import Checkbutton, Tk, Entry, BooleanVar
import FileB
class GUI:
def __init__(self, root=None):
# text entry
self.E1 = Entry(root, bd=5, width = 8)
self.E1.grid(row=0, column=1)
# Checkbox
self.CB_var = BooleanVar()
self.CB = Checkbutton(root, text="Get text", variable=self.CB_var, command=lambda: FileB.get_text(self))
self.CB.grid(row=0, column=2)
root = Tk() # initialize blank window
root.geometry("500x500")
GUI(root)
root.mainloop()
文件B(FileB.py)
from tkinter import DISABLED, NORMAL, END
def get_text(gui):
if gui.CB_var.get() == True:
entry_text = gui.E1.get()
gui.E1.config(state=DISABLED)
print(entry_text)
gui.E1.delete(0, END)
else:
gui.E1.config(state=NORMAL)
print("Checkbox not selected")
问题内容: 我想知道如何根据某些模式来更改某些单词和表达式的样式。 我正在使用小部件,但不确定如何执行此操作(与文本编辑器中语法高亮显示的想法相同)。即使这是用于此目的的正确小部件,我也不确定。 问题答案: 这是用于这些目的的正确小部件。基本概念是,将属性分配给标签,然后将标签应用于小部件中的文本范围。您可以使用文本小部件的命令来查找与您的模式匹配的字符串,这将为您返回足够的信息,将标记应用于匹配
问题内容: 我正在尝试创建一个程序,该程序执行一系列给定的用户输入。仅在某些情况下才需要几个用户输入,并且如果可能的话,我想仅在选择一个Checkbutton(表示存在要求这些输入的情况)时显示这些输入值的Entry框和Labels。我不确定该怎么做: 将我要添加的标签和条目框放在已经存在的行之间。 取消选中“选择”按钮时,“隐藏”标签和输入框,而不进行选择,这样,如果重新选择“选择”按钮,则可以
问题内容: 我想在小部件类绑定之后绑定自事件,以便在调用绑定函数时更改小部件的文本。例如,在文本窗口小部件中的内容更改之前,将调用我的绑定。 问题答案: 在您的情况下,发生的事情是您的打印值绑定发生在类绑定之前,而类绑定实际上是在接受用户输入并将其放入小部件中的。有几种方法可以解决此问题。您可以绑定而不是,或者可以使用内置的条目验证功能在每次按键时调用您的代码。使用该解决方案,您将获得所有需要的数
问题内容: 我是Python的新手。我想创建一个以图像为背景的应用程序。但是,当我在图像上添加“标签”时,标签上会看到白色背景。我们是否可以将“标签”小部件的颜色设置为“透明”? 问题答案: 我不知道一种使Label背景透明的方法。一种选择是使用Canvas小部件作为整个对象的基础,然后使用该方法添加背景图像并创建文本标签。这将需要更多的工作,但是文本应该在图像顶部没有背景的情况下呈现。(诚然
问题内容: 我正在使用 Python 和 Tkinter ,我需要知道小部件的当前尺寸(宽度,高度)。 我试过了,但是它只返回一个固定值,并且每当窗口小部件大小改变时(例如,调整窗口大小时)都不会更新。 问题答案: 使用和获取实际的窗口小部件大小,该属性只是给几何管理器的提示。
问题内容: 我正在尝试使用该函数查找窗口的大小,但最终返回的结果 我也曾尝试过,但我不断 码 问题答案: 您试图在渲染窗口之前获取尺寸。 在s之前添加一个,它会显示正确的尺寸。