tkinter多次使用相同的小部件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tkinter多次使用相同的小部件相关的知识,希望对你有一定的参考价值。

由于西班牙语StakOverFlow中没有人还没有回复我,我在这里问。我来自ARG。我正在进行大规模文档上传自动化。我用tkinter创建的第一个小部件询问用户要将哪种类型的文档上传到Web。完成此过程后,我想抛出另一个小部件来询问相同的问题。问题是我不知道如何编写该代码。我还没有学会如何处理类。我的小部件的代码是来自网络示例的副本,并且格式化以符合我的规范。

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

当上传一种类型的文档时,我需要再次抛出小部件,以便询问用户是否要继续使用其他类型的文档。

答案

有几个选择。您可以简单地打开Tkinter窗口并询问用户是否要加载另一个文件。您还在tkinter实例中使用sleep()。你不能在Tkinter中使用sleep()。还有另一种名为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()

以上是关于tkinter多次使用相同的小部件的主要内容,如果未能解决你的问题,请参考以下文章

gtkmm 是不是可以多次将相同的小部件添加到 vbox

tkinter canvas create_window

如何在tkinter中找出当前的小部件大小?

Flutter:一次多次使用相同的动画小部件

如何在 tkinter Text 小部件中突出显示文本

tkinter 中的框架对象没有对小部件进行分组