![](/img/trans.png)
[英]Python tkinter: Make the output appear in a text box on GUI not in the shell
[英]How do I make my python tkinter output to show in GUI instead of python shell?
我用tkinter編寫了一個python程序,以顯示用戶單擊“輸入”按鈕時這四個國家(尼日利亞,加拿大,中國和澳大利亞)的大陸。 我希望當用戶單擊“輸入”按鈕時,響應標簽中的文本應顯示所選國家/地區所屬的特定大陸。
主要問題是我不知道如何在主程序窗口的可見標簽中更新輸出,而是將輸出顯示在python shell上。 (我是python tkinter GUI的新手)
===========================代碼==================== =================
from functools import partial
import tkinter as tk
from tkinter import *
def serial_port(var):
selection = var.get()
# to save space
text_dict = {
1: 'Africa',
2: 'North America',
3: 'Asia',
4: 'Australia'}
text_to_print = text_dict[selection]
print(text_to_print) #apparently, I learn I can't use print in GUI but idk what to use in place of print here
def main():
root= tk.Tk()
root.title("Continent")
root.geometry("500x300")
var = IntVar()
var.set(1)
#Button to show selected profile to assign FTW
Lang_1=Radiobutton(root, text='Nigeria', variable=var, value=1, width=20)
Lang_2=Radiobutton(root, text='Canada', variable=var, value=2, width=20)
Lang_3=Radiobutton(root, text='Japan', variable=var, value=3, width=20)
Lang_4=Radiobutton(root, text='Australia', variable=var, value=4, width=20)
# Button to show entered reg values and data in it
Enter_Button=Button(root, text='ENTER',command=partial(serial_port, var), relief="ridge", background="Cyan", width=20)
Lang_1.grid(row=1, column=5)
Lang_2.grid(row=2, column=5)
Lang_3.grid(row=3, column=5)
Lang_4.grid(row=4, column=5)
Enter_Button.grid(row=7, column=3)
root.mainloop()
if __name__ == '__main__':
main
你快到了。 您需要使用Entry小部件。
from functools import partial
import tkinter as tk
from tkinter import *
def serial_port(var,entry): #add the Entry widget as variable
entry.delete(0, 'end') #clear the entry
selection = var.get()
text_dict = {
1: 'Africa',
2: 'North America',
3: 'Asia',
4: 'Australia'}
text_to_print = text_dict[selection]
entry.insert(0,text_to_print) #set the entry
def main():
root= tk.Tk()
root.title("Continent")
root.geometry("500x300")
var = IntVar()
var.set(1)
entry = Entry() #create the Entry widget
Lang_1=Radiobutton(root, text='Nigeria', variable=var, value=1, width=20)
Lang_2=Radiobutton(root, text='Canada', variable=var, value=2, width=20)
Lang_3=Radiobutton(root, text='Japan', variable=var, value=3, width=20)
Lang_4=Radiobutton(root, text='Australia', variable=var, value=4, width=20)
Enter_Button=Button(root, text='ENTER',command=partial(serial_port, var, entry), relief="ridge", background="Cyan", width=20) #pass the Entry widget
Lang_1.grid(row=1, column=5)
Lang_2.grid(row=2, column=5)
Lang_3.grid(row=3, column=5)
Lang_4.grid(row=4, column=5)
Enter_Button.grid(row=7, column=3)
entry.grid(row=8, column=3) #place the Entry widget
root.mainloop()
if __name__ == '__main__':
main()
要將文本打印到tkinter GUI中,您需要一個單獨的標簽小部件。
檢查下面的代碼。 我添加了小部件Return_Label
,您可以根據需要將其配置和位置更改為。 我很確定這應該做您想要的。
#These variables are made global so both functions can access them
var = None
Return_Label = None
def serial_port():
global var, Return_Label
selection = var.get()
text_dict = {
1: "Africa",
2: "North America",
3: "Asia",
4: "Australia"}
text_to_print = text_dict[selection]
Return_Label.config(text = text_to_print)
def main():
global var, Return_Label
root = tk.Tk()
root.title("Continent")
root.geometry("500x300")
var = tk.IntVar()
var.set(1)
Lang_1 = tk.Radiobutton(root, text = "Nigeria", variable = var, value = 1, width = 20)
Lang_2 = tk.Radiobutton(root, text = "Canada", variable = var, value = 2, width = 20)
Lang_3 = tk.Radiobutton(root, text = "Japan", variable = var, value = 3, width = 20)
Lang_4 = tk.Radiobutton(root, text = "Australia", variable = var, value = 4, width = 20)
Enter_Button = tk.Button(root, text = "ENTER", command = serial_port, relief = "ridge", bg = "Cyan", width = 20)
Return_Label = tk.Label(root)
Lang_1.grid(row = 1, column = 5)
Lang_2.grid(row = 2, column = 5)
Lang_3.grid(row = 3, column = 5)
Lang_4.grid(row = 4, column = 5)
Enter_Button.grid(row = 7, column = 3)
Return_Label.grid(row = 6, column = 3) #change this to wherever you want it printed
root.mainloop()
if (__name__ == "__main__"):
main()
使用Label()
函數。 它需要父窗口小部件和文本。
Label(parent, text = "what you want")
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.