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参数无法解析,我不知道该怎么改,谁能教教我,谢谢大佬!
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
我试了一下 调用没问题啊。你那个主程序看一下是怎么写的
from tkinter import * # 我把函数放在a.py中----(这段代码是在a.py中)
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 # 这里系统提示错误,说'but' 没有定义,但是'but'是在主程序定义的
def fun3():
but['state']=NORMAL
from tkinter import * # 这段代码是在b.py 中
import a
root = Tk() # 这是主程序 ,然后调用a.py模块
root.geometry('480x480')
# 建立新窗口
but = Button(root,text='点击一次后状态改写',command=lambda :[a.fun1(),a.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()
你看一下,点击按钮后,按钮状态没有被改写,说明fun2没有被调用。
but是一个变量 没有定义 怎么使用
学到了