我正在制作自己的自定义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")
答案 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)