【问题标题】:How Do I Pass an Object to a Function Within a Class Using a Caller Method in Python?如何使用 Python 中的调用方方法将对象传递给类中的函数?
【发布时间】:2020-11-07 22:11:46
【问题描述】:

我正在重新创建一个我一直在研究的程序,该程序以前使用 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()

【问题讨论】:

  • caller = MainWindow(windowsSettings) 检查变量名,因为名字是windowSettings 但是你上面使用windowsSettings...

标签: python class object tkinter parameter-passing


【解决方案1】:

您似乎是 OOP 的新手

将您的代码修复到下面。

windowSettings = MainWindow(800, 600, 'Program Name', 'zoomed')
windowSettings.createWindow()

一旦使用 windowSettings = MainWindow(..) 创建,windowSettings 就会成为 MainWindow 的一个实例。

您可以在网上找到大量关于 OOP 的文章

【讨论】:

  • 是的,虽然我使用 Python 已经有一段时间了,但我从未深入研究过对象。我将如何将 self.resolution 放入 createWindow 方法中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2019-02-19
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多