tk中有没有能够指定初始位置的对话框?
时间: 2024-03-14 22:43:01 浏览: 88
商业编程-源码-一个可以指定初始目录的目录选择对话框程序.zip
在 Tkinter 中,可以使用 `tkinter.simpledialog` 模块中的 `SimpleDialog` 类来实现简单对话框的功能。`SimpleDialog` 类提供了 `geometry` 方法,可以用于设置对话框的初始位置。
具体来说,`geometry` 方法接受一个字符串参数,格式为 `WIDTHxHEIGHT+XOFFSET+YOFFSET`,其中 `WIDTH` 和 `HEIGHT` 分别表示对话框的宽度和高度,`XOFFSET` 和 `YOFFSET` 分别表示对话框的 X 坐标和 Y 坐标。例如,`geometry("400x300+100+100")` 表示对话框的宽度为 400 像素,高度为 300 像素,初始位置的 X 坐标为 100 像素,Y 坐标为 100 像素。
以下是一个示例代码,可以创建一个大小为 300x200 的 `SimpleDialog`,并将其初始位置设置为屏幕中央:
```python
import tkinter as tk
import tkinter.simpledialog as sd
class MyDialog(sd.SimpleDialog):
def __init__(self, parent):
super().__init__(parent, title="My Dialog", width=300, height=200)
root = tk.Tk()
# 获取屏幕大小
screen_width, screen_height = root.winfo_screenwidth(), root.winfo_screenheight()
# 计算对话框位置
dlg_width, dlg_height = 300, 200
dlg_x = (screen_width - dlg_width) // 2
dlg_y = (screen_height - dlg_height) // 2
# 创建 SimpleDialog 对象,并设置初始位置
MyDialog(root).geometry(f"{dlg_width}x{dlg_height}+{dlg_x}+{dlg_y}")
root.mainloop()
```
以上示例代码中,`MyDialog` 是继承自 `SimpleDialog` 的自定义对话框类,通过计算屏幕大小和对话框大小来确定对话框的初始位置,并将位置作为参数传递给 `geometry` 方法来设置对话框的初始位置。
阅读全文