为了账号安全,请及时绑定邮箱和手机立即绑定

自定义 python 模块中的变量

自定义 python 模块中的变量

qq_遁去的一_1 2022-01-18 17:50:03
我正在制作我自己的名为 zoro 的自定义 python 模块,并且我想让人们制作一个变量,并且该变量等于我模块中的一个函数,但我该怎么做呢?我已经尝试查看其他模块(如turtle)的代码,turtle 使用了 self 参数,所以我尝试使用它,但它说TypeError: win() missing 1 required positional argument: 'self'.我的程序代码来测试模块:import zorotest = 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 rootdef winTitle(title):    root.title(title)我想做这样的事情:test = zoro.win("test","black",500,500)test.zoro.winTitle("test2")
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

问题:


你想做的事情叫做inheritance. 例如:


佐罗.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()


查看完整回答
反对 回复 2022-01-18
?
万千封印

TA贡献1891条经验 获得超3个赞

假设您希望您的驱动程序使用当前定义的模块,您需要一个名为rootfor的全局变量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)

然后你的司机看起来像


import zoro


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

zoro.winTitle(test, "test2")


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信