自定义python模块中的变量

时间:2019-04-22 19:01:47

标签: python variables module

我正在制作自己的自定义python模块zoro,并且希望使人们能够创建变量,并且该变量等于我模块中的函数,但是我该怎么做呢?

我已经尝试过查找其他模块(例如turtle)的代码,并且turtle使用了self参数,所以我尝试使用它,但是它表示TypeError: win() missing 1 required positional argument: 'self'

测试模块的程序代码:

import zoro

test = zoro.win("test","black",500,500)
test.zoro.winTitle("test2")

我的模块代码:

from tkinter import *


def win(title,bg,w,h):
    root = Tk()
    root.title(title)
    root.config(bg=bg)
    root.geometry(str(w) + "x" + str(h))
    return root
def winTitle(title):
    root.title(title)

我想这样做:

test = zoro.win("test","black",500,500)
test.zoro.winTitle("test2")

2 个答案:

答案 0 :(得分:2)

  

问题

您要执行的操作称为inheritance。 例如:

  

zoro.py

import tkinter as tk

class App(tk.Tk):
    def __init__(self, title, bg, width, height):
        super().__init__()
        self.title(title)
        self.geometry('{}x{}'format(width, height)
        self.config(bg=bg)
  

用法

import zoro

class MyApp(zoro.App):
    def __init__(self):
        super().__init__("test","black",500,500)

        # Change title
        self.title('my new title')

        # Add further widgets

if __name__ == '__main__':
    MyApp().mainloop()

答案 1 :(得分:1)

假设您希望驱动程序与当前定义的模块一起使用,则需要+[CIContext contextWithMetalDevice:options:]使用一个名为root的全局变量。此外,winTitle返回的对象没有名为win的属性。

zoro

也就是说,您的模块应该固定为避免全局变量。

import zoro

zoro.root = zoro.win("test", "black", 500, 500)
zoro.winTitle("test2")

然后您的驱动程序将如下所示

from tkinter import *


def win(title, bg, w, h):
    root = Tk()
    root.title(title)
    root.config(bg=bg)
    root.geometry(str(w) + "x" + str(h))
    return root


def winTitle(root, title):
    root.title(title)