root.resizable(0, 0) root.wm_attributes("-toolwindow", 1) screenwidth = root.winfo_screenwidth() screenheight = root.winfo_screenheight() widths = 300 heights = 100
时间: 2024-02-03 12:04:10 浏览: 133
这段代码是用来控制窗口的大小和位置的。具体来说:
- `root.resizable(0, 0)` 表示窗口不可调整大小。
- `root.wm_attributes("-toolwindow", 1)` 表示将窗口设置为工具栏窗口,这样在任务栏中不会显示窗口图标。
- `screenwidth = root.winfo_screenwidth()` 和 `screenheight = root.winfo_screenheight()` 分别获取屏幕的宽度和高度。
- `widths = 300` 和 `heights = 100` 分别设置窗口的宽度和高度为 300 像素和 100 像素。
如果你想让窗口在屏幕中央打开,可以使用以下代码:
```
root.geometry('%dx%d+%d+%d' % (widths, heights, (screenwidth - widths) / 2, (screenheight - heights) / 2))
```
它会将窗口的左上角位置设置为屏幕中央。
相关问题
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` 被销毁后出现的问题。
root1 = tkinter.Tk() #创建tkingter窗口 root1.title('登录') #标题 root1.geometry('270x110+{}+{}'.format((root1.winfo_screenwidth()-270)//2, (root1.winfo_screenheight()-110)//2)) #设置窗口尺寸和出现位置 root1.resizable(0,0)请帮我美化一下这个页面
好的,我可以给你提供一个简单的美化方案,包括修改窗口的背景颜色、添加标签和输入框等组件,具体代码如下:
```python
import tkinter as tk
root1 = tk.Tk() #创建tkinter窗口
root1.title('登录') #标题
root1.geometry('270x110+{}+{}'.format((root1.winfo_screenwidth()-270)//2, (root1.winfo_screenheight()-110)//2)) #设置窗口尺寸和出现位置
root1.resizable(0,0) #设置窗口大小是否可以调整
# 添加标签
label_username = tk.Label(root1, text='用户名:', font=('Arial', 12))
label_username.place(x=30, y=20)
label_password = tk.Label(root1, text='密码:', font=('Arial', 12))
label_password.place(x=30, y=50)
# 添加输入框
entry_username = tk.Entry(root1, font=('Arial', 12), width=18)
entry_username.place(x=100, y=20)
entry_password = tk.Entry(root1, font=('Arial', 12), width=18, show='*')
entry_password.place(x=100, y=50)
# 添加登录按钮
button_login = tk.Button(root1, text='登录', font=('Arial', 12), width=8, command=lambda:print('登录成功'))
button_login.place(x=90, y=80)
root1.mainloop()
```
这样就可以在原有的窗口基础上增加一些美化的组件了,你可以根据自己的需要对其进行修改。
阅读全文