将Tkinter控制台输出重定向到框架

时间:2019-10-09 18:52:34

标签: python user-interface tkinter

我正在构建一个应用程序,并希望将功能(绑定到按钮)生成的输出重定向到页面的第二帧。我无法弄清楚如何从绑定到按钮的函数中获取控制台输出(打印语句)并将其重定向到第二帧。

我的应用是使用类方法构建的,看起来像这样:

class MyApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        image = Image.open("wallhaven-47j39o.jpg")
        self.background_image = ImageTk.PhotoImage(image)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand = True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (UserLogin, MainMenu, TestPage, signupPage, ExtractXLSX, Nomenclature, Buffers, AddUsers, RemoveUsers,
                  DeleteUsers, CreateUsers, ListUserItems):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(UserLogin)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.configure(background='#e6eeff')
        frame.tkraise()


class ListUserItems(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller

        background_label = tk.Label(self, image=controller.background_image)
        background_label.image = controller.background_image
        background_label.place(x=0, y=0, relwidth=1, relheight=1)

        frame2 = Frame(self, bg='white', width=500, height=300, bd=4, relief=RAISED).place(x=400, y=350)

        label = tk.Label(self, text="User's items listing", font=('Courier', 18), bg=Background).place(relx=0.30, rely=0.10)

        self.user_label = tk.Label(self, text="Nom de l'utilisateur :", bg=Background, font=("Courier", 12))
        self.user_label.place(x=330, y=200)
        self.user = tk.Entry(self, bg='#abb5c6', font=("Verdana", 10), width=27)
        self.user.place(x=540, y=203)

        self.execute_button = tk.Button(self, text="    Execute    ", width=30, activebackground='blue', command=lambda: list_user_items(self.user.get(), textbox)).place(x=540, y=250)
        self.back_button = tk.Button(self, text="Main menu", width=30, activebackground='blue', command=lambda: controller.show_frame(MainMenu)).place(x=540, y=650)

list_user_items函数是一个简单的API函数:

def list_user_items(username):
    gis = authentification()
    user = gis.users.get(username)
    user_items = user.items()
    print(user_items)

0 个答案:

没有答案