new to GUI creation with python, I have the following code, how can I make the print command appear on the GUI not the command line? I’m wanting to show the print in the GUI as a text box or some kind of output window so the process can be shown.
JavaScript
x
38
38
1
import mechanicalsoup
2
def validateLogin(username, password): #source: https://pythonexamples.org/python- tkinter-login-form/
3
URL3 = 'mysite'
4
headers = {
5
'referer': URL3 + '/',
6
'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',
7
}
8
#print("username entered :", username.get())
9
#print("password entered :", password.get())
10
browser.open(URL3, headers=headers) browser.select_form()
11
browser.form.set("username", username.get())
12
browser.form.set("password", password.get())
13
response = browser.submit_selected()
14
print(response.text)
15
return
16
17
#window
18
tkWindow = Tk()
19
tkWindow.geometry('400x150')
20
tkWindow.title('Tkinter Login Form - pythonexamples.org')
21
22
#username label and text entry box
23
usernameLabel = Label(tkWindow, text="User Name").grid(row=0, column=0)
24
username = StringVar()
25
usernameEntry = Entry(tkWindow, textvariable=username).grid(row=0, column=1)
26
27
#password label and password entry box
28
passwordLabel = Label(tkWindow,text="Password").grid(row=1, column=0)
29
password = StringVar()
30
passwordEntry = Entry(tkWindow, textvariable=password, show='*').grid(row=1, column=1)
31
32
validateLogin = partial(validateLogin, username, password)
33
34
#login button
35
loginButton = Button(tkWindow, text="Login", command=validateLogin).grid(row=4, column=0)
36
37
tkWindow.mainloop()
38
Advertisement
Answer
You can add a label for output underneath loginButton
:
JavaScript
1
3
1
output = StringVar()
2
outputLabel = Label(tkWindow, textvariable = output).grid(row = 5, column = 0)
3
Then replace print(response.text)
with output.set(reponse.text)
to change the text in your label.
Edit for ScrolledText
Add from tkinter import scrolledtext
to the top.
Remove output = StringVar()
and replace outputLabel = ...
with
JavaScript
1
3
1
outputText = scrolledtext.ScrolledText(tkWindow)
2
outputText.grid(row = 5, column = 0, columnspan = 2)
3
Then, in validateLogin
, replace output.set(...)
with
JavaScript
1
3
1
outputText.delete(1.0, "end") #Delete whatever is currently there
2
outputText.insert(1.0, response.text) #Insert the response
3