如题,魔法指令创建的对话框每次都在左上角,这个怎么调整
import tkinter as tk
from tkinter import simpledialog
from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def create_centered_dialog(default_text="天地人和"):
"""
title: 创建屏幕居中对话框
description: 创建一个屏幕居中的对话框,默认值为 % default_text %,用户可以进行修改,并返回用户输入的内容。
inputs:
- default_text (str): 对话框的默认文本,eg: "天地人和"
outputs:
- user_input (str): 用户输入的文本,eg: "修改后的文本"
"""
# 检查输入参数类型
if not isinstance(default_text, str):
raise TypeError("默认文本必须是字符串类型")
class CenteredDialog(simpledialog.Dialog):
def __init__(self, parent, title, prompt, initialvalue=None):
self.prompt = prompt
self.initialvalue = initialvalue
self.result = None
super().__init__(parent, title)
def body(self, master):
tk.Label(master, text=self.prompt).grid(row=0, padx=5, pady=5)
self.entry = tk.Entry(master, width=30)
self.entry.grid(row=1, padx=5, pady=5)
if self.initialvalue:
self.entry.insert(0, self.initialvalue)
self.entry.select_range(0, tk.END)
return self.entry
def apply(self):
self.result = self.entry.get()
def center_window(self):
self.update_idletasks()
width = self.winfo_width()
height = self.winfo_height()
x = (self.winfo_screenwidth() // 2) - (width // 2)
y = (self.winfo_screenheight() // 2) - (height // 2)
self.geometry(f"{width}x{height}+{x}+{y}")
def show(self):
self.wait_visibility()
self.center_window()
self.grab_set()
self.wait_window()
return self.result
# 创建根窗口
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 创建并显示自定义对话框
dialog = CenteredDialog(
root,
"输入对话框",
"请输入内容:",
default_text
)
result = dialog.show()
# 关闭根窗口
root.destroy()
# 如果用户取消输入,返回提示信息
if result is None:
return "用户取消了输入"
return result
