class Master1(object): def __init__(self): self.a = 100 class Master2(object): def __init__(self): self.b = 200 class Sub(Master1,Master2): def __init__(self): super().__init__() def show(self): print(self.a,self.b) sub = Sub() sub.show()
时间: 2023-05-15 08:06:16 浏览: 129
输出结果为:100 200。这是一个多重继承的例子,Sub 类同时继承了 Master1 和 Master2 两个类,通过 super() 函数调用了两个父类的构造函数,然后在 show() 方法中分别访问了两个父类的属性。
相关问题
class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed') # 创建左侧面板,使用 Canvas 和 Frame 实现滚动条 self.panel_left = tk.Canvas(master, width=150, bg='lightcyan') self.panel_left.pack(side=tk.LEFT, fill=tk.Y) scroll = tk.Scrollbar(master, command=self.panel_left_frame.yview) scroll.pack(side=tk.LEFT, fill=tk.Y) self.panel_left.config(yscrollcommand=scroll.set) self.panel_left_frame = tk.Frame(self.panel_left) self.panel_left.create_window((0, 0), window=self.panel_left_frame, anchor='nw') # 设置滚动条长度 def scroll_update(*args): self.panel_left.configure(scrollregion=self.panel_left.bbox("all")) self.panel_left_frame.bind("<Configure>", scroll_update) scroll_update()報AttributeError: 'ExcelApp' object has no attribute 'panel_left_frame'
这个错误提示是因为在创建左侧面板时,`self.panel_left_frame` 没有被正确地创建。可能是因为在创建 `scroll` 滚动条时,应该使用 `self.panel_left_frame` 而不是 `self.panel_left`。可以尝试将以下代码:
```
scroll = tk.Scrollbar(master, command=self.panel_left_frame.yview)
scroll.pack(side=tk.LEFT, fill=tk.Y)
```
修改为:
```
scroll = tk.Scrollbar(self.panel_left, command=self.panel_left_frame.yview)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
```
这样应该就可以正确创建 `self.panel_left_frame` 了,解决这个错误。
帮我解析以下每句代码import tkinter as tk from tkinter import messagebox from db import db from MinaPage import MianPage class LoginPage(object): def __init__(self, master): self.root = master self.root.geometry('300x180') self.root.title('登录页面') self.username = tk.StringVar() self.password = tk.StringVar() self.page = tk.Frame(root) self.page.pack() tk.Label(self.page).grid(row=0, column=0) tk.Label(self.page, text='账号:').grid(row=1, column=1, pady=10) tk.Entry(self.page, textvariable=self.username).grid(row=1, column=2) tk.Label(self.page, text='密码:').grid(row=2, column=1, pady=10) tk.Entry(self.page, textvariable=self.password).grid(row=2, column=2) tk.Button(self.page, text='登录', command=self.login).grid(row=3, column=1, pady=10) tk.Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=2, pady=10) def login(self): name = self.username.get() pwd = self.password.get() flag, message = db.check_login(name, pwd) if flag: # 销毁当前页面 self.page.destroy() MianPage(self.root) else: messagebox.showwarning(title='警告', message=message) if __name__ == '__main__': root = tk.Tk() LoginPage(master=root) root.mainloop()
这段代码是一个基于 tkinter 的简单登录页面的实现。具体来说,代码的主要功能包括:
1. 导入 tkinter、messagebox、db 和 MinaPage 模块。
2. 创建 LoginPage 类,该类包含一个构造函数和一个 login 方法。
3. 构造函数中:
- 初始化 tkinter 窗口相关设置,如窗口大小、标题等。
- 创建两个 StringVar 对象 username 和 password,用于保存用户输入的账号和密码。
- 创建一个 Frame 对象 page,用于承载登录页面的各个控件。
- 在 page 中添加标签、文本框和按钮等控件,用于实现登录页面的各个元素。
4. login 方法中:
- 获取用户输入的账号和密码。
- 调用 db 模块的 check_login 函数,判断输入的账号和密码是否正确。
- 如果正确,则销毁当前窗口,创建一个新的 MianPage 窗口,并显示该窗口。
- 如果不正确,则弹出警告框,提示用户输入的账号或密码有误。
5. 在主函数中,创建一个 Tk 对象 root,实例化 LoginPage 类,并启动主循环。
总体来说,这段代码实现了一个简单的登录页面,用户可以在该页面中输入账号和密码,然后点击登录按钮进行验证。如果验证通过,则销毁当前页面,跳转到其他页面;否则弹出警告框提示用户输入的账号或密码有误。
阅读全文