gpt4 book ai didi

python - 如何在另一个类中访问和使用一个Python类中的变量

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

我首先使用 tkinter 创建了两个 Python 类。我有三个变量在第一类 UserLogin 中存储不同的数据。我希望能够访问和使用另一个类 HomePage(也在同一个文件中)中的两个变量中的值。目标是根据用户级别,我想显示某些小部件。换句话说,每个用户在登录时只能看到一定数量的小部件,这是由其用户级别决定的。 HomePage 类是包含要显示的小部件的窗口,而第一类是登录窗口。我这里有一个较短版本的代码。我无法发布所有代码,因此使用了这个较短的版本。

import backend    
class UserLogin:
def __init__(self, top):
self.top = top
'''This class configures and populates the toplevel window.
top is the toplevel containing window.'''
_bgcolor = '#d9d9d9' # X11 color: 'gray85'
_fgcolor = '#000000' # X11 color: 'black'
_compcolor = '#d9d9d9' # X11 color: 'gray85'
_ana1color = '#d9d9d9' # X11 color: 'gray85'
_ana2color = '#ececec' # Closest X11 color: 'gray92


top.geometry("676x450+458+150")
top.title("Some title here")
top.configure(background="#d9d9d9")
top.configure(highlightbackground="#d9d9d9")
top.configure(highlightcolor="black")

username = StringVar()
password = StringVar()

def user_login():
if len(username.get()) != 0 and len(password.get()) != 0:
result = backend.log(username.get())
if not result:
self.messageBox.delete('1.0', END)
self.messageBox.insert(END, 'Invalid Login')
else:
level = result[0]
user_name = result[1]
pass_word = result[2]
if user_name == username.get() and pass_word == password.get():
new_window()
else:
self.messageBox.delete('1.0', END)
self.messageBox.insert(END, 'Invalid Login')

else:
self.messageBox.delete('1.0', END)
self.messageBox.insert(END, 'Username and Password required')

# This function opens the window created in Class HomePage
def new_window():
self.newWindow = Toplevel(self.top)
login = HomePage(self.newWindow)

class HomePage
class HomePage:
def __init__(self, top):
self.top = top
'''This class configures and populates the toplevel window.
top is the toplevel containing window.'''
_bgcolor = '#d9d9d9' # X11 color: 'gray85'
_fgcolor = '#000000' # X11 color: 'black'
_compcolor = '#d9d9d9' # X11 color: 'gray85'
_ana1color = '#d9d9d9' # X11 color: 'gray85'
_ana2color = '#ececec' # Closest X11 color: 'gray92'
self.style = ttk.Style()
if sys.platform == "win32":
self.style.theme_use('winnative')
self.style.configure('.',background=_bgcolor)
self.style.configure('.',foreground=_fgcolor)
self.style.configure('.',font="TkDefaultFont")
self.style.map('.',background=
[('selected', _compcolor), ('active',_ana2color)])

top.geometry("903x568+392+150")
top.title("Some title here")
top.configure(background="#d9d9d9")
top.configure(highlightbackground="#d9d9d9")
top.configure(highlightcolor="black")

self.linksFrame = Frame(top)
self.linksFrame.place(relx=0.035, rely=0.052, relheight=0.875
, relwidth=0.272)
self.linksFrame.configure(relief='groove')
self.linksFrame.configure(borderwidth="2")
self.linksFrame.configure(relief='groove')
self.linksFrame.configure(background="#d9d9d9")
self.linksFrame.configure(highlightbackground="#d9d9d9")
self.linksFrame.configure(highlightcolor="black")
self.linksFrame.configure(width=235)

# Then I want to be able to say here that:
self.registerPat = Button(self.linksFrame)
self.registerPat.place(relx=0.043, rely=0.079, height=34, width=217)
self.registerPat.configure(activebackground="#ececec")
self.registerPat.configure(activeforeground="#000000")
self.registerPat.configure(background="#d9d9d9")
self.registerPat.configure(disabledforeground="#a3a3a3")
self.registerPat.configure(foreground="#000000")
self.registerPat.configure(highlightbackground="#d9d9d9")
self.registerPat.configure(highlightcolor="black")
self.registerPat.configure(pady="0")
self.registerPat.configure(relief='groove')
self.registerPat.configure(text='''Register Patient''')

最佳答案

这个问题对我来说不太清楚,我看到您定义了变量但对值进行了硬编码。请尝试修复提供的代码以便更好地理解代码。一种实现您想要的方法是使 HomePage 类继承自 UserLogin,这样您就可以在 Homepage 中获取 Userlogin 的变量。示例:

class Parent:
def __init__(self):
self.name = "Mart"
self.age = 40
self.height = 170

class Child(Parent):
def show_info(self):
print(self.name, self.age, self.height)

现在,如果我们定义了 test = Child() 然后定义了 test.show_info(),这将打印 Parent 类中定义的值。

关于python - 如何在另一个类中访问和使用一个Python类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303205/

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