gpt4 book ai didi

python - 如何正确访问另一个文件中的类中的变量?

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:53 25 4
gpt4 key购买 nike

我目前正在尝试使用 tkinter 为 future 的项目制作 UI。然而,我在建立一些基本的 OOP 概念时遇到了很多麻烦。

我有两个文件,main.pypressed.py,我正在尝试在 pressed.py< 中编写一个用于按下按钮的函数 但我不确定如何访问 main.py

中的变量

这是我当前遇到的错误:

Class 'UI' has no 'py_entry' member 

我尝试使用许多其他 Stack Overflow 帖子作为引用,但没有一个起作用。

main.py

import tkinter as tk
import os
import geocoder

from tkinter import messagebox
from PIL import Image
from PIL import ImageTk

import pressed

# Paths
assets_path = "./assets/"

class UI(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)

# Set window title
parent.title("geo-location-data")

# Set window geometry
parent.geometry("800x600")

# Address entry label
py_label = tk.Label(parent, text="Emter an addres:", font=("Helvetica", 12))
py_label.place(x=0, y=0)

# Address entry field
py_entry = tk.Entry(parent, font=("Helvetica", 12))
py_entry.place(x=130, y=2)

# Open button_normal.png
button_normal_img = Image.open(assets_path + "button_normal.png")

# Resize button_normal.png
button_normal_img_resize = button_normal_img.resize((16, 16), Image.BILINEAR)
button_normal_img_resize_format = "resized_button_normal" + ".png"

# Set path
path_for_button_normal = os.path.join(assets_path, button_normal_img_resize_format)

# Save to path
button_normal_img_resize.save(path_for_button_normal)

# Open saved image
button_normal_img_r_open = Image.open(assets_path + "resized_button_normal.png")
button_normal_img_r_open = ImageTk.PhotoImage(button_normal_img_r_open)

#def button_pressed(self):
# If address entry field is blank
#if(py_entry.index("end") == 0):
#messagebox.showerror("Error", "Entry field was left blank.")
#return self
#else:
#print("test")
#return self

# Pressed

# ADD COMMAND #
py_button = tk.Button(parent, font=("Helvetica", 12), width=16, height=16, image=button_normal_img_r_open)
py_button.place(x=320, y=2)

if __name__ == "__main__":
root = tk.Tk()
UI(root).pack(side="top", fill="both", expand=True)
root.mainloop()

按下.py

from sample import main

from tkinter import messagebox

class Pressed(main.UI):
def __init__(self):
def button_press(self):
# This is where I'm getting the error
if (main.UI.):
messagebox.showerror("Error", "Address entry field was left blank.")
return self
else:
print("Button pressed!")
return self

最佳答案

您的问题似乎是您在类内声明局部变量,这些变量只能从 __init__() 函数内访问。 Python 有一种方法可以通过在类内部(在方法外部)声明类变量或通过调用 self.variable_name 来创建类变量。然后,您可以通过在类内的每个位置调用 self.variable_name 来访问该变量。
self 是对类的当前实例的引用。

对于您的示例,您可能希望声明变量的方式是使用 self 关键字:

class UI(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)

self.py_entry = tk.Entry(parent, font=("Helvetica", 12))
self.py_entry.place(x=130, y=2)

创建 UI 类的实例(调用 UI())后,您应该能够访问 py_entry 字段。

关于python - 如何正确访问另一个文件中的类中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com