草生鸣间 2021-06-25 23:07 采纳率: 81.8%
浏览 58
已结题

如何建立自定义模块并调用

from tkinter import *
from change import *

root = Tk()
root.geometry('480x480')
# 建立新窗口
def fun1():
    win = Toplevel()
    win.geometry('230x230')
    win.title('新窗口')
    Button(win,text='关闭',command=lambda :[win.destroy(),fun3()]).place(relx=0.4,rely=0.4)
# 改写按钮状态为’不可变‘
def fun2():
    but['state'] =DISABLED
# 改写按钮状态为’正常‘
def fun3():
    but['state']=NORMAL

but = Button(root,text='点击一次后状态改写',command=lambda :[fun1(),fun2()])        # (导入数据)建立新窗口
but.place(relx=0.3,rely=0.3,relwidth=0.4)
lb = Message(root,text='''点击一次按钮,弹出一个新窗口后,按钮的状态变为灰色,再次点击新窗口中的’关闭‘键后,按钮的状态恢复正常,即每次只能创建一次新窗口。''',relief=GROOVE)
lb.place(relx=0.1,rely=0.5,width=300,relheight=0.4)

root.mainloop()

我想把以上自定义函数全部放在另一个文件中,然后调用这个文件,但是不成功,原因是fun3(),fun2()中的but参数无法解析,我不知道该怎么改,谁能教教我,谢谢大佬!

  • 写回答

5条回答 默认 最新

  • 草生鸣间 2021-06-27 20:05
    关注
    from tkinter import *                       #  b.py  主程序段
    import a
    root = Tk()
    root.geometry('480x480')
    # 建立新窗口                                              # 把‘but’ 按钮从主程序传给a.py中    
    
    but = Button(root,text='点击一次后状态改写',command=lambda :[a.fun1(but),a.fun2(but)])        # (导入数据)建立新窗口
    but.place(relx=0.3,rely=0.3,relwidth=0.4)
    lb = Message(root,text='''点击一次按钮,弹出一个新窗口后,按钮的状态变为灰色,再次点击新窗口中的’关闭‘键后,按钮的状态恢复正常,即每次只能创建一次新窗口。''',relief=GROOVE)
    lb.place(relx=0.1,rely=0.5,width=300,relheight=0.4)
    
    root.mainloop()
    from tkinter import *                   #  a.py  放置函数的文件
    
    def fun1(but):
        win = Toplevel()                        # 关键在于给函数添加一个参数
        win.geometry('230x230')
        win.title('新窗口')
        Button(win,text='关闭',command=lambda :[win.destroy(),fun3(but)]).place(relx=0.4,rely=0.4)
    # 改写按钮状态为’不可变‘
    def fun2(but):
        but['state'] =DISABLED
    
    def fun3(but):
        but['state']=NORMAL
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 (求远程解决)深信服vpn-2050这台设备如何配置才能成功联网?