Увеличить размер окна tkSimpleDialog

Как мне увеличить или определить размер окна поля tkSimpleDialog?

import Tkinter, tkSimpleDialog
root = Tkinter.Tk()
root.withdraw()
test = tkSimpleDialog.askstring("testing", "Enter your search string text")
print test

4 ответа

Решение

Начиная с: http://effbot.org/tkinterbook/tkinter-dialog-windows.htm я сделал следующее:

import Tkinter as tk, tkSimpleDialog

class MyDialog(tkSimpleDialog.Dialog):
    def body(self, master):
        self.geometry("800x600")
        tk.Label(master, text="Enter your search string text:").grid(row=0)

        self.e1 = tk.Entry(master)
        self.e1.grid(row=0, column=1)
        return self.e1 # initial focus

    def apply(self):
        first = self.e1.get()
        self.result = first


root = tk.Tk()
root.withdraw()
test = MyDialog(root, "testing")
print test.result

Если вы хотите, чтобы геометрия и текст метки были настраиваемыми, вам, вероятно, придется переопределить __init__ (приведенная в ссылке версия должна быть хорошей отправной точкой).

Сделайте второй параметр настолько большим, насколько вам нравится:

import Tkinter, tkSimpleDialog
root = Tkinter.Tk()
root.withdraw()
test = tkSimpleDialog.askstring("testing", "Enter your search string text in the space provided")
print test

Если вы хотите расширить поле, вы можете сделать кнопки шире из исходного кода или переопределить это внутри своего кода:

      def buttonbox(self):
    '''add standard button box.

    override if you do not want the standard buttons
    '''

    box = Frame(self)

    w = Button(box, text="OK", width=100, command=self.ok, default=ACTIVE)
    w.pack(side=LEFT, padx=5, pady=5)
    w = Button(box, text="Cancel", width=100, command=self.cancel)
    w.pack(side=LEFT, padx=5, pady=5)

    self.bind("<Return>", self.ok)
    self.bind("<Escape>", self.cancel)

    box.pack()

tkSimpleDialog не позволяет вам изменить его геометрию

На месте используйте только Tk()

Здесь у вас есть пример, где вы увидите разницу между двумя окнами

import Tkinter, tkSimpleDialog

root = Tkinter.Tk()
root.geometry('240x850+200+100')
#root.withdraw()
test = tkSimpleDialog.askstring("testing", "Enter your search string text")
root.mainloop()
print test
Другие вопросы по тегам