Tkinter использовать один и тот же виджет несколько раз - PullRequest
0 голосов
/ 30 августа 2018

Так как никто в испанском StakOverFlow еще не ответил мне, я спрашиваю здесь. Я из ARG. Я работаю над автоматизацией массовой загрузки документов. Первый виджет, который я создал с помощью tkinter, спрашивает пользователя, какой тип документа требуется загрузить в Интернет. Как только этот процесс закончен, я хочу бросить другой виджет, чтобы задать тот же вопрос. Дело в том, что я не знаю, как написать этот код. Я еще не научился обращаться с классами. А код для моего виджета является копией примера из Интернета и отформатирован в соответствии с моими спецификациями.

from Tkinter import Tk, Label, Button
class DocumentTypeOption:
def __init__(self, master):
    self.master = master
    master.iconbitmap("bigpython.ico")
    master.minsize(280,150)
    master.geometry("280x150")
    master.title("DOCUMENT TYPE")

    self.label = Label(master, text="SELECT THE DOCUMENT TYPE")
    self.label.pack()

    self.tipo1_button = Button(master, text="Tipo1", command=self.opcion_tipo1)
    self.tipo1_button.pack()

    self.tipo2_button = Button(master, text="Tipo2", command=self.opcion_tipo2)
    self.tipo2_button.pack()
def funciontipo1(self):
    def subirtipo1():
        "things to upload doc type1"
    time.sleep(0.5)
    root.destroy()    
    time.sleep(1)
    subirtipo1()
    "SHOULD THE WIDGET BE CALLED HERE?"
def funciontipo2(self):
    def subirtipo1():
        "things to upload doc type2"
    time.sleep(0.5)
    root.destroy()    
    time.sleep(1)
    subirtipo2()
    "SHOULD THE WIDGET BE CALLED HERE?""
root = Tk()
my_gui = OpcionTipoDeDocumento(root)
root.mainloop()

Когда один тип документа был загружен, мне нужно еще раз выбросить виджет, чтобы спросить пользователя, хочет ли он продолжить работу с другим типом документа.

1 Ответ

0 голосов
/ 30 августа 2018

Есть несколько вариантов. Вы можете просто оставить окно Tkinter открытым и спросить пользователя, хотят ли они загрузить другой файл. Вы также используете sleep() внутри экземпляра tkinter. Вы не можете использовать sleep() в Tkinter. Есть еще один метод, называемый after(), который предназначен для установки временных событий, чтобы заменить использование sleep(). В этом случае я не думаю, что вам все равно нужна задержка.

Вот простой пример использования класса tkinter и 1 для doc и 1, чтобы спросить, хотите ли вы загрузить еще один.

# import tkinter as tk # for python 3.X
# from tkinter import messagebox # for python 3.X
import Tkinter as tk
import tkMessageBox as messagebox

class DocumentTypeOption(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.iconbitmap("bigpython.ico")
        self.minsize(280,150)
        self.geometry("280x150")
        self.title("DOCUMENT TYPE")

        self.label = tk.Label(self, text="SELECT THE DOCUMENT TYPE")
        self.label.pack()

        self.tipo1_button = tk.Button(self, text="Tipo1", command=lambda: self.do_stuff("Tipo1"))
        self.tipo1_button.pack()

        self.tipo2_button = tk.Button(self, text="Tipo2", command=lambda: self.do_stuff("Tipo2"))
        self.tipo2_button.pack()

    def do_stuff(self, doc_type):
        # things to upload doc type1
        # you can do this part with a single function as long as you check the doc type first.
        print(doc_type) # just to verify buttons are working.
        self.check_next(doc_type)

    def check_next(self, doc_type):
        x = messagebox.askyesno("DOCUMENT OPTION", "Would you like to load another {}?".format(doc_type))
        if x != True:
            self.destroy()


my_gui = DocumentTypeOption()
my_gui.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...