【问题标题】:Tkinter output to GUI textboxTkinter 输出到 GUI 文本框
【发布时间】:2021-02-24 23:22:57
【问题描述】:

使用python创建GUI的新手,我有以下代码,我怎样才能让打印命令出现在GUI而不是命令行上? 我想在 GUI 中将打印显示为文本框或某种输出窗口,以便显示过程。

import mechanicalsoup
def validateLogin(username, password): #source: https://pythonexamples.org/python-  tkinter-login-form/
    URL3 = 'mysite'
    headers = {
        'referer': URL3 + '/',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
    }
    #print("username entered :", username.get())
    #print("password entered :", password.get())
    browser.open(URL3, headers=headers)     browser.select_form() 
    browser.form.set("username", username.get()) 
    browser.form.set("password", password.get())
    response = browser.submit_selected()
    print(response.text)
    return

#window
tkWindow = Tk()  
tkWindow.geometry('400x150')  
tkWindow.title('Tkinter Login   Form - pythonexamples.org')

#username label and text entry box
usernameLabel =   Label(tkWindow, text="User Name").grid(row=0, column=0)
username = StringVar()
usernameEntry =  Entry(tkWindow, textvariable=username).grid(row=0, column=1)  

#password label and password entry box
passwordLabel =   Label(tkWindow,text="Password").grid(row=1, column=0)  
password = StringVar()
passwordEntry = Entry(tkWindow, textvariable=password, show='*').grid(row=1, column=1)  

validateLogin = partial(validateLogin, username,   password)

#login button
loginButton = Button(tkWindow,  text="Login", command=validateLogin).grid(row=4, column=0)  

tkWindow.mainloop()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    你可以在loginButton下面添加一个输出标签:

    output = StringVar()
    outputLabel = Label(tkWindow, textvariable = output).grid(row = 5, column = 0)
    

    然后将 print(response.text) 替换为 output.set(reponse.text) 以更改标签中的文本。

    编辑 ScrolledText
    from tkinter import scrolledtext 添加到顶部。 删除output = StringVar() 并将outputLabel = ... 替换为

    outputText = scrolledtext.ScrolledText(tkWindow)
    outputText.grid(row = 5, column = 0, columnspan = 2)
    

    然后,在validateLogin 中,将output.set(...) 替换为

    outputText.delete(1.0, "end") #Delete whatever is currently there
    outputText.insert(1.0, response.text) #Insert the response
    

    【讨论】:

    • 这只是一个空白窗口
    • 这确实有效,文本太大,无论如何都不能使其成为可滚动的文本框?
    • 是的,有一个名为 ScrolledText 的 tkinter 小部件可以做到这一点。
    • 你怎么能用输出做到这一点?
    • @iHaag 我已经编辑了这个问题来解释它
    猜你喜欢
    • 2019-04-22
    • 2011-03-20
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多