开发者社区 问答 正文

打印消息在较低的tk帧?

当我单击按钮时,我想要在我的较低的tk帧中显示的信息将出现在空闲shell中。我希望有人能告诉我如何解决?(我删除了我的api细节)

import tkinter as tk
from tkinter import *
from PIL import ImageTk
from coinbase.wallet.client import Client
import json

client = Client(api_key, api_secret)
total = 0
message = []
accounts = client.get_accounts()
for wallet in accounts.data:
    message.append( str(wallet['name']) + ' ' +   str(wallet['native_balance']) )
    value = str( wallet['native_balance']).replace('USD','')
    total += float(value)
message.append( 'Total Balance: ' + 'USD ' + str(total) )

root = tk.Tk()
canvas = Canvas(width = 444, height = 444, bg = 'gray24')
canvas.pack(expand = YES, fill = BOTH)
image = ImageTk.PhotoImage(file = "/Users/dusty/Pictures/Background.jpg")
canvas.create_image(0, 0, image = image, anchor = NW)

frame = tk.Frame(root, bg='gray24', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.5, relheight=0.1, anchor='n')


button = tk.Button(frame, text="go", font=40, command=lambda: print('\n'.join( message )))
button.place(relx=0.7, relheight=1, relwidth=0.3)
entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)
lower_frame = tk.Frame(root, bg='gray24', bd=10)
lower_frame.place(relx=0.5, rely=0.3, relwidth=0.5, relheight=0.5, anchor='n')


mainloop()

问题来源StackOverflow 地址:/questions/59387120/print-message-in-lower-tk-frame

展开
收起
kun坤 2019-12-25 21:42:38 398 分享 版权
阿里云 AI 助理回答

在你的代码中,你希望在点击按钮后将信息显示在下方的lower_frame中。为了实现这个功能,你可以使用Text或者Label控件来展示信息。这里我将向你展示如何使用Text控件来动态显示消息。

首先,在你的lower_frame里添加一个Text控件,并设置一些基本属性,比如字体大小和背景颜色。然后,定义一个新的函数(例如show_message),该函数将在按钮被点击时调用,用于清空并更新Text控件的内容。

修改后的代码如下:

import tkinter as tk
from tkinter import *
from PIL import ImageTk
from coinbase.wallet.client import Client
import json

# ... 你的其他导入和初始化代码 ...

def show_message():
    # 清空text_widget的内容
    text_widget.delete(1.0, tk.END)
    # 将message列表中的内容逐行插入到Text控件中
    for line in message:
        text_widget.insert(tk.END, line + "\n")

root = tk.Tk()
canvas = Canvas(width = 444, height = 444, bg = 'gray24')
canvas.pack(expand = YES, fill = BOTH)
image = ImageTk.PhotoImage(file = "/Users/dusty/Pictures/Background.jpg")
canvas.create_image(0, 0, image = image, anchor = NW)

frame = tk.Frame(root, bg='gray24', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.5, relheight=0.1, anchor='n')

button = tk.Button(frame, text="go", font=40, command=show_message)
button.place(relx=0.7, relheight=1, relwidth=0.3)
entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)

lower_frame = tk.Frame(root, bg='gray24', bd=10)
lower_frame.place(relx=0.5, rely=0.3, relwidth=0.5, relheight=0.5, anchor='n')

# 在lower_frame中添加Text控件
text_widget = tk.Text(lower_frame, wrap=tk.WORD, font=("Helvetica", 16), bg='gray24', fg='white')
text_widget.pack(fill=tk.BOTH, expand=True)

mainloop()

这段代码中,我们创建了一个名为text_widgetText控件,并将其放置在lower_frame中。当用户点击"Go"按钮时,show_message函数会被调用,它会清除text_widget中的现有文本,然后将message列表中的所有消息逐行插入到text_widget中。这样,每次点击按钮,lower_frame中的内容就会更新为最新的消息列表。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答