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(),我找不到一种方法来使用它并调整对话框的大小。
发布于 2021-10-15 10:59:07
要更改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)发布于 2021-10-15 18:19:40
好吧,如果你想改变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方法,允许更改对话框的几何形状)。
https://stackoverflow.com/questions/69583118
复制相似问题