def newwind变压器(): # 设置主界面的容器大小和位置 winNew = Toplevel(root) winNew.title('房间') winNew.geometry("600x400+500+200") with open('XIANLU.py', 'r', encoding='utf-8') as f: code = compile(f.read(), 'XIANLU.py', 'exec') exec(code)在执行完with之后如何返回定义的def的原本程序
时间: 2023-12-10 15:03:44 浏览: 117
可以将原本程序封装成一个函数,然后在with语句块外部调用该函数即可。例如:
```
def newwind变压器():
# 设置主界面的容器大小和位置
winNew = Toplevel(root)
winNew.title('房间')
winNew.geometry("600x400+500+200")
def run_original_code():
with open('XIANLU.py', 'r', encoding='utf-8') as f:
code = compile(f.read(), 'XIANLU.py', 'exec')
exec(code)
run_original_code()
```
这样,在执行完with语句块中的代码后,就会执行`run_original_code()`函数中封装的原本程序。
相关问题
在 with open('anjian.py', 'r', encoding='utf-8') as f: code = compile(f.read(), 'anjian.py', 'exec') exec(code)情况下 使用def newwind变压器(): # 设置主界面的容器大小和位置 winNew = Toplevel(root) winNew.title('房间') winNew.geometry("600x400+500+200") with open('XIANLU.py', 'r', encoding='utf-8') as f: code = compile(f.read(), 'XIANLU.py', 'exec') exec(code)出现File "anjian.py", line 16, in newwind变压器 winNew = Toplevel(root) ^^^^ NameError: name 'root' is not defined 进程已结束,退出代码0
这个错误的原因是在函数 `newwind变压器` 中,变量 `root` 没有被定义。你需要在函数中定义 `root` 变量,或者将 `root` 作为参数传递给函数。例如:
```python
def newwind变压器(root):
# 设置主界面的容器大小和位置
winNew = Toplevel(root)
winNew.title('房间')
winNew.geometry("600x400+500+200")
with open('XIANLU.py', 'r', encoding='utf-8') as f:
code = compile(f.read(), 'XIANLU.py', 'exec')
exec(code)
# 在适当的位置调用 newwind变压器,并将 root 作为参数传递
newwind变压器(root)
```
def newwind1(self): user = Toplevel(self.root) user.geometry('500x300') user.title('用户登录界面') lab1 = Label(user, text="用户名:") lab2 = Label(user, text="密码:") # 标签 global text1 text1 = Entry(user, font=(14)) # 明文 global text2 text2 = Entry(user, font=(14), show='*') # 密文 lab1.place(x=100, y=100) lab2.place(x=125, y=150) text1.place(x=175, y=100) text2.place(x=175, y=150) name = text1.get() woss = text2.get() btn03 = Button(user, text='登录', command=lambda: self.check1()) btn03.place(x=125, y=200, width=100, height=25) btn04 = Button(user, text='注册', command=lambda: self.user2()) btn04.place(x=300, y=200, width=100, height=25) def check1(self): name0=text1.get() woss0=text2.get() if name0=='Tom' and woss0=='040828': tk.messagebox.showinfo(title='欢迎!',message='登陆成功!') self.newwind3() elif name0=='沈' and woss0=='0205': tk.messagebox.showinfo(title='欢迎!',message='登陆成功!') self.newwind3() else: tk.messagebox.showinfo(title='错误!',message='账号或密码输入错误!') def newwind3(self): self.winNew = Toplevel(self.root) self.winNew.geometry('600x400') self.winNew.title('图书管理系统') self.btn_delrow = Button(self.winNew, text='还书', command=lambda: self.delrow()) self.btn_delrow.place(x=50, y=230, width=125, height=25) btn3 = Button(self.winNew, text='查询自己借阅情况', command=lambda: self.find()) btn3.place(x=50, y=75, width=125, height=25) self.btn4 = Button(self.winNew, text='借书', command=lambda: self.create4()) self.btn4.place(x=50, y=125, width=125, height=25)
这段代码定义了三个函数,分别是newwind1、check1和newwind3。newwind1函数用于创建用户登录界面,其中包括了用户名和密码的输入框和登录、注册两个按钮。check1函数用于检查用户输入的用户名和密码是否正确,如果正确则弹出登录成功的提示框,并调用newwind3函数创建图书管理系统界面。如果输入错误,则弹出错误提示框。newwind3函数用于创建图书管理系统界面,其中包括了查询自己借阅情况、借书和还书三个按钮。点击借书按钮会调用create4函数。点击还书按钮会调用delrow函数。
阅读全文