tkinter 窗口还原
时间: 2023-06-19 22:08:24 浏览: 111
如果你想在 tkinter 中实现窗口最小化、最大化和恢复原始大小的功能,可以使用 `wm_state` 和 `wm_attributes` 方法。
1. 最小化窗口:
```python
root.wm_state('iconic')
```
2. 最大化窗口:
```python
root.wm_state('zoomed')
```
3. 恢复窗口原始大小:
```python
root.wm_state('normal')
```
4. 禁止窗口最大化:
```python
root.wm_attributes('-zoomed', 0)
```
5. 允许窗口最大化:
```python
root.wm_attributes('-zoomed', 1)
```
注意:`wm_attributes` 方法中的第一个参数应该是 `-zoomed`,而不是 `zoomed`,因为 `-zoomed` 表示禁止最大化,而 `zoomed` 表示允许最大化。
相关问题
Tkinter自定义窗口生成代码
### 使用 Tkinter 创建自定义窗口
为了创建带有自定义样式的窗口,可以利用 `Tkinter` 的灵活性来调整窗口的各种属性。下面展示了一个较为完整的例子,其中不仅设置了窗口的基础样式,还实现了自定义标题栏的功能。
#### 基础窗口设置与组件添加
首先,通过导入必要的模块并初始化主窗口来进行基础配置:
```python
import tkinter as tk
from PIL import Image, ImageTk # 需要安装Pillow库用于处理图标
root = tk.Tk()
root.overrideredirect(True) # 移除默认的窗口装饰器(边框和标题栏)
width = 600
height = 400
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_cordinate = int((screen_width/2) - (width/2))
y_cordinate = int((screen_height/2) - (height/2))
root.geometry("{}x{}+{}+{}".format(width,
height, x_cordinate, y_cordinate)) # 居中显示窗口
```
这段代码移除了标准的窗口边界,并计算出使窗口居中的位置[^1]。
#### 添加自定义标题栏
接着,在窗口顶部加入一个模拟标题栏的部分,允许拖动窗口移动,并放置一些基本控制按钮(最小化、最大化/还原、关闭)。这里假设已经准备好了四个状态图标的图片文件。
```python
title_bar = tk.Frame(root, bg='#2e2e2e', relief='raised', bd=2)
title_bar.pack(fill=tk.X, side=tk.TOP)
close_button = tk.Button(title_bar, text='✕', command=root.destroy, bg="#2e2e2e", fg='white')
minimize_button = tk.Button(title_bar, text='—', command=root.iconify, bg="#2e2e2e", fg='white')
# 加载图标资源
icon_close = Image.open("state_closeIcon.png")
icon_minimize = Image.open("state_miniIcon.png")
photo_close = ImageTk.PhotoImage(icon_close)
photo_minimize = ImageTk.PhotoImage(icon_minimize)
close_button.config(image=photo_close)
minimize_button.config(image=photo_minimize)
close_button.pack(side=tk.RIGHT)
minimize_button.pack(side=tk.LEFT)
def get_pos(event):
global xpos, ypos
global click
click = True
xpos, ypos = event.x_root, event.y_root
def move_window(event):
global click
global xpos, ypos
if click:
dx = event.x_root - xpos
dy = event.y_root - ypos
new_xpos = root.winfo_x() + dx
new_ypos = root.winfo_y() + dy
pos_str = "600x400+" + str(new_xpos) + "+" + str(new_ypos)
root.geometry(pos_str)
xpos, ypos = event.x_root, event.y_root
def release_click(event):
global click
click = False
title_bar.bind("<ButtonPress-1>", get_pos)
title_bar.bind("<B1-Motion>", move_window)
title_bar.bind("<ButtonRelease-1>", release_click)
```
上述代码片段展示了如何构建一个可交互的标题栏,支持拖拽移动窗口以及执行相应的命令操作[^4]。
#### 完整示例总结
以上就是基于 `Tkinter` 实现的一个简单而功能齐全的自定义窗口案例。它去掉了系统的原生标题栏,取而代之的是由开发者自行设计的一套界面元素,从而能够更好地适应特定应用场景的需求。
2. 对于下面的程序段,下列描述中错误的是( ) from tkinter import *;w=Tk();w["bg"]="cyan"; A. (1)语句:w.minsize(width=100,height=100); w.maxsize(width=300,height=200); 用于设置窗口的缩放限制;(2)语句:w.state("zoomed"); 用于设置窗口最大化;(3)语句:w.state("iconic"); 或w.state("icon");或w.iconify();用于设置窗口最小化;(4)语句:w.deiconify();用于还原窗口;(5)语句:w.attributes("-fullscreen",True); 用于设置全屏窗口;(6)语句:print(w.state()); 用于输出窗口当前的状态; B. 语句:w.attributes("-alpha",0.8); 用于设置窗口的透明度 C. 语句:w.attributes("-toolwindow",True); 用于设置工具栏样式 D. 语句:w.overrideredirect(True); 用于设置窗口为有边框模式 3. 对于下面的程序段,下列描述中错误的是( ) from tkinter import *;w=Tk();w.config(bg="yellow");w.title("uestc"); A. 语句:w.geometry("400x300+200-100"); 设置窗口距离桌面左边的距离为200像素 B. 语句:w.geometry("400x300+200-100"); 设置窗口距离桌面下边的距离为100像素 C. 语句:w.geometry("400x300-200+100"); 设置窗口距离桌面右边的距离为200像素 D. 语句:w.geometry("400x300-0-0"); 和w.geometry("400x300+0+0"); 等效 4. 对于下面的程序段,欲设置标签控件中文本的文本格式,下列各项中错误的是( ) from tkinter import *;w=Tk();w.geometry("300x200+0+0"); s=Label(w,text="电子科技大学");s.pack(); A. s["font"]="Arial 30 bold italic underline overstrike" B. s["font"]=("Arial",30,"bold","italic","underline","overstrike") C. s["font"]=(30,"Arial","bold italic") D. s["font"]=("Arial",30) 5. 按钮Button控件的state属性值不能是( ) A. icon B. active C. disabled D. normal
2. B. 语句:w.attributes("-alpha",0.8); 用于设置窗口的透明度是正确描述的。
3. C. 语句:w.geometry("400x300-200+100"); 设置窗口距离桌面右边的距离为200像素是错误的描述。应该是设置窗口距离桌面左边的距离为200像素。
4. C. s["font"]=(30,"Arial","bold italic") 是错误的描述。应该是 s["font"]=("Arial",30,"bold italic")。
5. A. icon 不是按钮Button控件的state属性值。可能的值为 normal、active 和 disabled。
阅读全文