草生鸣间 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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度