python - Python tkinter 输入框和函数访问类外
问题描述
我一直在搜索很多,但我仍然不知道如何从 python 中的不同类访问变量。我必须访问名为 Forget_PW 的类中的变量(变量 = user_input_resendCode)。然后,我还想要一个按钮来访问类外的函数(名为 OTP)。函数 (sendingSMS) 将在 (user_input_resendCode) 中获取用户的输入。如何访问课堂外的输入框以及如何访问课堂外的命令(函数)?谢谢
这是我的代码。
**class Forget_PW:**
def __init__(self, top=None):
self.background = Label(forget)
self.background.place(relx=0, rely=0, width=1366, height=768)
self.bg_img = PhotoImage(file="./images/bg.png")
self.background.configure(image=self.bg_img)
# ============================================
# Sign-in Form (Admin)
# ============================================
self.forgetpw_form = Label(forget)
self.forgetpw_form.place(relx=0.1, rely=0.190, width=450, height=550)
self.forgetpw_form_Image = Image.open("./images/forgetPasswordForm_first.png")
forgetpw_form_ImageResized = self.forgetpw_form_Image.resize((450, 550), Image.ANTIALIAS)
self.forgetpw_form_Image = ImageTk.PhotoImage(forgetpw_form_ImageResized)
self.forgetpw_form.configure(image=self.forgetpw_form_Image)
# ============================================
# Logo (Company)
# ============================================
self.logo = Label(forget, bg="black")
self.logo.place(relx=0.22, rely=0.05, width=100, height=100)
self.logo_image = Image.open("./images/Logo1.png")
resized = self.logo_image.resize((100, 100), Image.ANTIALIAS)
self.logo_image = ImageTk.PhotoImage(resized)
self.logo.configure(image=self.logo_image)
# ============================================
# Image Slideshow
# ============================================
def start():
global i, show
if i >= (len(images) - 1):
i = 0
slide_image.config(image=images[i])
else:
i = i + 1
slide_image.configure(image=images[i])
show = slide_image.after(2000, start)
image1 = Image.open("./images/milktea4.png")
resized1 = image1.resize((650, 800), Image.ANTIALIAS)
image1 = ImageTk.PhotoImage(resized1)
image2 = Image.open("./images/milktea5.jpg")
resized2 = image2.resize((650, 800), Image.ANTIALIAS)
image2 = ImageTk.PhotoImage(resized2)
image3 = Image.open("./images/milktea6.jpg")
resized3 = image3.resize((650, 800), Image.ANTIALIAS)
image3 = ImageTk.PhotoImage(resized3)
# label1.configure(image=new_pic)
# create list of images
images = [image1, image2, image3]
# configure the image to the Label
i = 0
slide_image = Label(forget, image=images[i])
slide_image.place(relx=0.56, rely=0, width=650, height=800)
if i >= (len(images) - 1):
i = 0
slide_image.config(image=images[i])
else:
i = i + 1
slide_image.configure(image=images[i])
show = slide_image.after(2000, start)
# ============================================
# User Input (OTP)
# ============================================
**self.user_input_resendcode** = EntryWithPlaceholder(forget, 'Enter Username or Email')
self.user_input_resendcode.place(relx=0.135, rely=0.477, width=300, height=24)
self.user_input_resendcode.configure(font=("Corbel", 15))
self.user_input_resendcode.configure(relief="flat")
**class OTP:**
def __init__(self, top=None):
top.geometry("1366x768")
top.resizable(0, 0)
top.title("Invoices")
# ============================================
# Yellow background
# ============================================
self.background_otp = Label(otp1)
self.background_otp.place(relx=0, rely=0, width=1366, height=768)
self.bg_img_otp = PhotoImage(file="./images/bg.png")
self.background_otp.configure(image=self.bg_img_otp)
# ============================================
# Sign-in Form (Admin)
# ============================================
self.forgetpw_form = Label(otp1)
self.forgetpw_form.place(relx=0.1, rely=0.190, width=450, height=550)
self.forgetpw_form_Image = Image.open("./images/forgetPasswordForm.png")
forgetpw_form_ImageResized = self.forgetpw_form_Image.resize((450, 550), Image.ANTIALIAS)
self.forgetpw_form_Image = ImageTk.PhotoImage(forgetpw_form_ImageResized)
self.forgetpw_form.configure(image=self.forgetpw_form_Image)
# ============================================
# Logo (Company)
# ============================================
self.logo = Label(otp1, bg="black")
self.logo.place(relx=0.22, rely=0.05, width=100, height=100)
self.logo_image = Image.open("./images/Logo1.png")
resized = self.logo_image.resize((100, 100), Image.ANTIALIAS)
self.logo_image = ImageTk.PhotoImage(resized)
self.logo.configure(image=self.logo_image)
# ============================================
# Image Slideshow
# ============================================
def start():
global i, show
if i >= (len(images) - 1):
i = 0
slide_image.config(image=images[i])
else:
i = i + 1
slide_image.configure(image=images[i])
show = slide_image.after(2000, start)
image1 = Image.open("./images/milktea4.png")
resized1 = image1.resize((650, 800), Image.ANTIALIAS)
image1 = ImageTk.PhotoImage(resized1)
image2 = Image.open("./images/milktea5.jpg")
resized2 = image2.resize((650, 800), Image.ANTIALIAS)
image2 = ImageTk.PhotoImage(resized2)
image3 = Image.open("./images/milktea6.jpg")
resized3 = image3.resize((650, 800), Image.ANTIALIAS)
image3 = ImageTk.PhotoImage(resized3)
# label1.configure(image=new_pic)
# create list of images
images = [image1, image2, image3]
# configure the image to the Label
i = 0
slide_image = Label(otp1, image=images[i])
slide_image.place(relx=0.56, rely=0, width=650, height=800)
if i >= (len(images) - 1):
i = 0
slide_image.config(image=images[i])
else:
i = i + 1
slide_image.configure(image=images[i])
show = slide_image.after(2000, start)
# ============================================
# User Input (OTP)
# ============================================
self.user_input_resendcode1 = EntryWithPlaceholder(otp1, 'Enter OTP')
self.user_input_resendcode1.place(relx=0.135, rely=0.477, width=300, height=24)
self.user_input_resendcode1.configure(font=("Corbel", 15))
self.user_input_resendcode1.configure(relief="flat")
# ============================================
# Resend Code Button
# ============================================
self.resend_code = Button(otp1)
self.resend_code.place(relx=0.333, rely=0.550, width=100, height=15)
self.resend_code.configure(relief="flat",
overrelief="flat",
activebackground="white",
cursor="hand2",
bg="white",
# foreground="#ffffff",
# background="#ffffff",
borderwidth="0")
self.resend_code_Image = Image.open("./images/resendCode.png")
resend_code_ImageResized = self.resend_code_Image.resize((100, 15), Image.ANTIALIAS)
self.resend_code_Image = ImageTk.PhotoImage(resend_code_ImageResized)
self.resend_code.configure(image=self.resend_code_Image)
self.resend_code.configure(**command=sendingSMS**)
**def sendingSMS():**
find_user = "SELECT * FROM employee WHERE username = %s OR email_address = %s"
**cur.execute(find_user, [user_input_resendcode.get(), user_input_resendcode.get()])**
results = cur.fetchall()
if results:
if results[0][10] == "Admin":
client = Client('AC544a74e1519b84282c6d22e90d4dbe12', 'a85d7a3f765b109c3982269961eb6d49')
client.messages.create(from_='+19546211198', to=results[0][3], body="Your OTP is:" + otp)
messagebox.showinfo("info", "OTP sent to your registered mobile number")
else:
messagebox.showerror("Oops!!", "You are not an admin.")
else:
messagebox.showerror("Error", "Incorrect username or password.")
解决方案
推荐阅读
- c# - Unity 克隆对象永久化
- php - Woocommerce - 添加带有注释的产品(自定义页面)
- xamarin - 内容加载后轮播视图自动滑动 - Xamarin.forms
- slurm - 有没有办法在带有 slurm 的集群上单独使用 CPU?
- riot.js - 是否可以不省略自定义 Riot 标签中最外层元素的一些选项?
- javascript - 保存前古腾堡后验证
- c - 当我试图做 ssl_connect() 返回 0 和 ssl_get_error 返回 5
- scala - 在对rdd上的spark scala中进行哈希连接
- node.js - 如何使用 nodejs 和 mongodb 获取另一个内部的对象?
- html - HTML 文本区域着色