iT邦幫忙

0

Python Tkinter 更新Text內容

我用tkinter寫出了一個Text框和一個按鈕,Text框的內容是一個變數(output),而按鈕按下後可以成功更變變數output的內容,但是我無法讓text框的內容更新,網路上找到的方法都失敗

import os
import bs4
from tkinter import *

run = '0'

def main():
    ...
    ...
    ...
    output = response #用監控看確定output會更新
    global run #第二次執行(按按鈕)才更新text內容
    if run == '0': #第一次
        run = '1'
    else: #第二次(更新text)
        T.update()#沒用
        T.update_idletasks()#也是沒用
        
#設定tkinter視窗
root = Tk()
root.geometry("500x800")
root.attributes("-topmost", 1)

main()#第一次執行
button = Button(root, text="Refresh", command=main)#按鈕執行
button.pack()

S = Scrollbar(root)
T = Text(root, height=4, width=100)
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
T.tag_configure('in', font=('Microsoft JhengHei UI', 10))

T.insert(END, output, 'in')
T.config(state=DISABLED)

root.mainloop()

2 個回答

2
froce
iT邦大師 3 級 ‧ 2019-06-21 00:20:08
最佳解答
import os
from tkinter import *

run = '0'

root = Tk()
root.geometry("500x800")
root.attributes("-topmost", 1)

button = Button(root, text="Refresh")
button.pack()

S = Scrollbar(root)
T = Text(root, height=4, width=100)
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
T.tag_configure('in', font=('Microsoft JhengHei UI', 10))

T.insert(END, "output", 'in')
T.config(state=DISABLED)    # 把T的內容變成唯讀

def clickBtn(event):
    T.config(state=NORMAL)
    T.delete(1.0, END)
    T.insert(END, "BTN be clicked", 'in')
    T.config(state=DISABLED)

button.bind("<Button>", clickBtn)

root.mainloop()

你把Text設成唯讀,能改才怪...

ajiou iT邦新手 5 級 ‧ 2019-06-21 08:42:53 檢舉

好了,謝謝大大。對不起,沒注意到

0
小魚
iT邦大師 1 級 ‧ 2019-06-21 00:05:14

所以, 你的output跟response是什麼?

ajiou iT邦新手 5 級 ‧ 2019-06-21 00:17:47 檢舉

目前不便公開
但是內容大概是:'example\n this is example\n\n example example'

froce iT邦大師 3 級 ‧ 2019-06-21 00:20:42 檢舉

爬蟲啦,看import就知道了。

跑得快 iT邦新手 3 級 ‧ 2019-06-21 10:18:21 檢舉

bs4

我要發表回答

立即登入回答