python - 如何使用 Python 中的调用方方法将对象传递给类中的函数?
问题描述
我正在重新创建一个我一直在研究的程序,该程序以前使用 Tkinter 设置的变量。我以前并没有真正使用过对象,现在我正在尝试。我尝试过观看不同的视频和查找指南,但没有任何运气。目标是使我的程序尽可能模块化,使用单独的 .py 文件进行计算和 GUI 功能。我不确定使用对象是否适合我正在做的事情。
我无法将 windowsSettings 对象传递给 createWindow 方法。我收到一条错误消息,提示“ init () 缺少 3 个必需的位置参数:'width'、'height'、'title' 和 'state'”
import tkinter as tk
from tkinter import ttk
tkRoot = tk.Tk()
tkRoot.withdraw()
class MainWindow:
def __init__(self, width, height, title, state):
self.width = width
self.height = height
self.resolution = str(width) + 'x' + str(height)
self.title = title
self.state = state
def createWindow(self):
tkRoot.geometry(self.resolution)
tkRoot.title(self.title)
windowSettings = MainWindow(800, 600, 'Program Name', 'zoomed')
caller = MainWindow(windowsSettings)
caller.createWindow(windowSettings)
tk.mainloop()
解决方案
好像您是 OOP 的新手
将您的代码修复到下面。
windowSettings = MainWindow(800, 600, 'Program Name', 'zoomed')
windowSettings.createWindow()
一旦使用 windowSettings = MainWindow(..) 创建,windowSettings 就成为 MainWindow 的一个实例。
您可以在线找到大量关于 OOP 的文章
推荐阅读
- xslt - 计算一个字段的所有实例(即使在其他段中)
- django - Django:从中央数据库获取多个应用程序的应用程序用户模型
- react-native - 任务“:react-native-firebase:compileDebugJavaWithJavac”执行失败
- swiftui - 在 ScrollView 中滑动行会禁用滚动
- laravel - 如何在 laravel + vuejs 项目中使用 .env 文件?
- core-data - 带有 coredata 的 Sirikit 扩展
- xamarin.forms - 如何在下载图像时立即打开图像
- html - 像 pinterest 这样的网格布局仅使用 css 而没有 javascript
- css - 更改 CSS 边框速记语法顺序可以吗?
- python - 将两列csv文件数据转换成字典