如何在 Tkinter 中修改'askstring'对话框的大小?在蟒蛇中


import tkinter.commondialog
from tkinter import filedialog, Tk, Frame, Label, PhotoImage, Button, simpledialog
import form
from PIL import ImageTk, Image
import tkinter as tk
from tkinter import messagebox
import json
from tkinter.simpledialog import Dialog
from tkinter import commondialog  

class My_Class():
def__init__(self):
self.my_list=["a"]
def my_function(self):
list=["s","ss","df"]
for i in list:
q=tkinter.simpledialog.askstring(text="",prompt=i)

当我搜索相关问题时,我没有看到Python的答案,是的Django, android可用,但我们如何实现askstring对话框?一个相关的函数是body()我找不到一个方法来使用它并调整对话框的大小。

要改变Dialog的宽度和高度,您可以这样做:在body方法中调用.geometry:

from tkinter import Tk
from tkinter.simpledialog import Dialog

class MyDialog(Dialog):
def __init__(self, parent, title=None, width=300, height=200):
# all variables should be initialized before calling 
# `super` because it calls .wait_window
self.width = width
self.height = height
super().__init__(parent, title)
def body(self, master):
self.geometry(f'{self.width}x{self.height}')

root = Tk()
root.withdraw()
MyDialog(root)

如果你想改变tkinter.simpledialog.ask[string, integer, float]的几何形状,那么就必须这样做:

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()

必须在打开对话框后安排调用一个函数,该函数将获得根窗口的子窗口,并且由于对话框的父窗口被设置为根(也是自动的,但最好是显式的),那么它也将出现在该列表中。它应该是最后一个,但是有一个检查,检查它是否实际上是Dialog的一个实例(因为Dialog是继承链的某个地方,它继承自Toplevel,.geometry方法允许改变对话框的几何形状)。

相关内容

  • 没有找到相关文章