class DataProcess(): def __init__(self): self.root = tk.Tk() self.root.geometry("800x600") self.root.title("K-Anonymity") self.k_anonymity = None self.output_file_path = None self.file_label = tk.Label(self.root, text="没有导入数据集") self.file_label.pack(pady=10) self.load_button = tk.Button(self.root, text="导入数据集", command=self.load_data) self.load_button.pack(pady=5) self.anonymize_button = tk.Button(self.root, text="匿名化数据", command=self.anonymize_data, state=tk.DISABLED) self.anonymize_button.pack(pady=5) self.k_label = tk.Label(self.root, text="k:") self.k_label.pack(pady=10) self.k_entry = tk.Entry(self.root) self.k_entry.pack(pady=5) self.save_button = tk.Button(self.root, text="保存数据", command=self.save_data, state=tk.DISABLED) self.save_button.pack(pady=5) self.root.mainloop()在这段tk界面中添加背景
时间: 2024-03-17 18:44:35 浏览: 36
你可以在初始化函数中加入以下代码,将背景设置为图片或颜色:
```python
self.root.configure(bg='white') # 设置背景颜色为白色
# 或者
image_file = tk.PhotoImage(file='background.gif') # 设置背景图片
bg_label = tk.Label(self.root, image=image_file)
bg_label.place(x=0, y=0, relwidth=1, relheight=1)
bg_label.image = image_file
```
注意,如果你要设置背景图片,需要将图片放在与程序同级的文件夹中,并将文件名替换为你的背景图片文件名。
相关问题
class LoginFrame(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.master.title('登录系统') self.master.geometry('300x200') self.username_frame = tk.Frame(self.master) self.username_frame.pack() self.username_label = tk.Label(self.username_frame, text='用户名 ') self.username_label.pack(side=tk.LEFT) self.username_entry = tk.Entry(self.username_frame) self.username_entry.pack(side=tk.LEFT) self.password_frame = tk.Frame(self.master) self.password_frame.pack() self.password_label = tk.Label(self.password_frame, text=' 密码 ') self.password_label.pack(side=tk.LEFT) self.password_entry = tk.Entry(self.password_frame, show='*') self.password_entry.pack(side=tk.LEFT) self.login_button = tk.Button(self.master, text='登录', command=self.login) self.login_button.pack() def login(self): username = self.username_entry.get() password = self.password_entry.get() if username == 'AAA' and password == '111': self.master.destroy() root = tk.Tk() app = MainFrame(root) app.mainloop() else: tk.messagebox.showerror('错误', '用户名或密码错误!')修改代码,使得用户名、密码、登录键整体处于界面中心
可以使用Tkinter中的`place()`方法来实现整体居中,修改代码如下:
```
class LoginFrame(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title('登录系统')
self.master.geometry('300x200')
self.username_frame = tk.Frame(self.master)
self.username_frame.place(relx=0.5, rely=0.4, anchor=tk.CENTER)
self.username_label = tk.Label(self.username_frame, text='用户名 ')
self.username_label.pack(side=tk.LEFT)
self.username_entry = tk.Entry(self.username_frame)
self.username_entry.pack(side=tk.LEFT)
self.password_frame = tk.Frame(self.master)
self.password_frame.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
self.password_label = tk.Label(self.password_frame, text=' 密码 ')
self.password_label.pack(side=tk.LEFT)
self.password_entry = tk.Entry(self.password_frame, show='*')
self.password_entry.pack(side=tk.LEFT)
self.login_button = tk.Button(self.master, text='登录', command=self.login)
self.login_button.place(relx=0.5, rely=0.6, anchor=tk.CENTER)
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
if username == 'AAA' and password == '111':
self.master.destroy()
root = tk.Tk()
app = MainFrame(root)
app.mainloop()
else:
tk.messagebox.showerror('错误', '用户名或密码错误!')
```
在每个控件的`place()`方法中,设置`relx`和`rely`参数为`0.5`,表示在水平和垂直方向上居中,设置`anchor`参数为`tk.CENTER`,表示绕中心对齐。这样就可以实现整体居中了。
class LoginWindow: def __init__(self, master): self.master = master self.master.title("Login Window") self.master.geometry("300x250") self.master.resizable(0, 0) self.username = tk.StringVar() self.password = tk.StringVar()class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化# 查询窗口 class QueryWindow: def __init__(self, master): self.master = master master.title("查詢窗口") # 获取屏幕的宽度和高度 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化if __name__ == '__main__': root = tk.Tk() app = LoginWindow(root) root.mainloop()這個代碼中我有三個窗口,第一個銷毀后第三個就報self.tk.call( _tkinter.TclError: can't invoke "toplevel" command: application has been destroyed怎麽解決
你的问题可能是因为你在第三个窗口中使用了 `root`,而 `root` 在第一个窗口销毁后已经被销毁了。你可以在第三个窗口中使用 `master`,即 `QueryWindow` 类的 `__init__` 方法中的 `master`,这个变量是当前窗口的主 `Tk()` 对象。修改后的代码如下:
```
class LoginWindow:
def __init__(self, master):
self.master = master
self.master.title("Login Window")
self.master.geometry("300x250")
self.master.resizable(0, 0)
self.username = tk.StringVar()
self.password = tk.StringVar()
class ExcelApp:
def __init__(self, master):
self.master = master
master.title("Excel App")
# 获取屏幕的宽度和高度
screen_width = master.winfo_screenwidth()
screen_height = master.winfo_screenheight()
# 将窗口的大小设置为屏幕的大小
master.geometry("%dx%d" % (screen_width, screen_height))
master.state('zoomed') # 窗口最大化
# 查询窗口
class QueryWindow:
def __init__(self, master):
self.master = master
self.master.title("查詢窗口")
# 获取屏幕的宽度和高度
screen_width = self.master.winfo_screenwidth()
screen_height = self.master.winfo_screenheight()
# 将窗口的大小设置为屏幕的大小
self.master.geometry("%dx%d" % (screen_width, screen_height))
self.master.state('zoomed') # 窗口最大化
if __name__ == '__main__':
root = tk.Tk()
app = LoginWindow(root)
root.mainloop()
```
这样,你就可以在第三个窗口中使用 `self.master`(也可以用 `master`)代替 `root`,避免了 `root` 被销毁后出现的问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)