擅长:python、mysql、java
<p>如果你想改变<code>tkinter.simpledialog.ask[string, integer, float]</code>的几何结构,那么必须这样做:</p>
<pre class="lang-py prettyprint-override"><code>from tkinter import Tk, Button
from tkinter.simpledialog import askstring, Dialog
def change_geometry():
widget = root.winfo_children()[-1]
if isinstance(widget, Dialog):
widget.geometry('500x500')
def show_dialog():
root.after(10, change_geometry)
return askstring('Title', 'prompt', parent=root)
root = Tk()
root.geometry('300x200')
Button(root, text='ask string', command=show_dialog).pack()
root.mainloop()
</code></pre>
<p>必须在打开对话框后安排调用一个函数,该函数将获取根窗口的子对象,并且由于对话框的父对象被设置为根对象(也是自动的,但最好是显式的),那么它也将出现在该列表中,它应该是最后一个,但是有一个检查来检查它是否确实是<code>Dialog</code>的实例(因为<code>Dialog</code>位于继承链的某个位置,并且它从<code>Toplevel</code>继承,后者具有允许更改对话框几何结构的<code>.geometry</code>方法)</p>