这段代码无法摧毁 sign_in_f()定义的界面
时间: 2023-08-16 08:05:08 浏览: 127
这个问题可能是因为 `sign_in_f()` 定义的界面没有被正确的销毁。有几种方法可以尝试解决这个问题:
1. 确保 `sign_in_f()` 函数中的所有窗口小部件都已经被销毁。你可以使用 `widget.destroy()` 方法来销毁一个窗口小部件,如下所示:
```python
def sign_in_f():
# some code here
window.destroy() # 销毁主窗口
```
2. 使用 `grab_release()` 方法释放窗口小部件的控制权,然后再销毁它。例如:
```python
def sign_in_f():
# some code here
window.grab_release() # 释放控制权
window.destroy() # 销毁主窗口
```
3. 确保你在创建新窗口之前,已经销毁了旧窗口。例如:
```python
def sign_in_f():
# some code here
window.destroy() # 销毁旧窗口
new_window = tk.Tk() # 创建新窗口
# some code here
```
希望这些方法能帮助你解决这个问题。
相关问题
window = tk.Tk() window.title("三维显示系统登录界面") window.geometry("805x660") # 背景画布 import tkinter canvas = tk.Canvas(window,width=10250,height=100) img_gif = tkinter.PhotoImage(file='title3.gif') tkinter.Label(window, image=img_gif).place(relx=-0, rely=0) canvas.pack()sign_in_button = tk.Button(window,text="登录",command=sign_in_f) sign_up_button = tk.Button(window,text="注册",command=sign_up_f) sign_in_button.place(x=350,y=600) sign_up_button.place(x=470,y=600)加入文件调用按钮
下面是修改后的代码,加入了一个按钮,可以让用户选择文件:
```python
import tkinter as tk
from tkinter import filedialog
def sign_in_f():
pass
def sign_up_f():
pass
def open_file():
filename = filedialog.askopenfilename(initialdir="/", title="Select file",
filetypes=(("Text files", "*.txt*"), ("all files", "*.*")))
print(filename)
window = tk.Tk()
window.title("三维显示系统登录界面")
window.geometry("805x660")
# 背景画布
canvas = tk.Canvas(window, width=10250, height=100)
img_gif = tk.PhotoImage(file='title3.gif')
tk.Label(window, image=img_gif).place(relx=-0, rely=0)
canvas.pack()
# 登录和注册按钮
sign_in_button = tk.Button(window, text="登录", command=sign_in_f)
sign_up_button = tk.Button(window, text="注册", command=sign_up_f)
sign_in_button.place(x=350, y=600)
sign_up_button.place(x=470, y=600)
# 文件调用按钮
file_button = tk.Button(window, text="选择文件", command=open_file)
file_button.place(x=600, y=600)
window.mainloop()
```
在这个例子中,我们定义了一个新的函数`open_file()`,当用户点击文件按钮时,调用该函数打开文件对话框。当用户选择文件后,文件的路径会打印到控制台上。你可以根据需要修改`open_file()`函数的实现,以便在GUI中显示所选文件的路径。
def sign_in_f(): user_si_name = name_entry.get() user_si_pass = password_entry.get() if user_si_name in success: i = success.index(user_si_name) if success[i+1] == user_si_pass: import sys def sign_in_f(): user_si_name = name_entry.get() user_si_pass = password_entry.get() if user_si_name in success: i = success.index(user_si_name) if success[i + 1] == user_si_pass: with open('anjian.py', 'r', encoding='utf-8') as f: code = compile(f.read(), 'anjian.py', 'exec') exec(code) sys.exit()更改这段代码使界面结束并且使用with打开的程序
以下是修改后的代码:
```python
import sys
def sign_in_f():
user_si_name = name_entry.get()
user_si_pass = password_entry.get()
if user_si_name in success:
i = success.index(user_si_name)
if success[i+1] == user_si_pass:
with open('anjian.py', 'r', encoding='utf-8') as f:
code = compile(f.read(), 'anjian.py', 'exec')
exec(code)
sys.exit(0)
```
这个修改后的代码在执行完打开程序后,使用 `sys.exit(0)` 来结束界面程序。使用 `with` 语句来打开程序文件,可以确保文件在使用完后会被正确关闭。
阅读全文