gpt4 book ai didi

python - 我将如何修改/添加文本到 tkinter.Label?

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:41 25 4
gpt4 key购买 nike

我正在学习基本的 Python。我目前正在尝试创建一个只有加法和减法的简单计算器程序。不过我有一个问题。我不确定在按下按钮时如何将文本添加到我的 Python 标签。现在,按下“1”按钮后,我的程序会将显示标签更改为文本“1”。但是,我希望我的程序添加文本,而不是设置文本。

例如,如果我按“按钮 1” 5 次,它目前将重置标签文本 5 次,结果将是一个 1。我希望它在按下时将数字添加到标签,而不是替换。

按下按钮 5 次后的当前结果:1
按键5次请求结果:11111

这是我当前的程序代码。有什么不明白的,尽管问;谢谢。

from tkinter import *

window = Tk()

# Creating main label
display = Label(window, text="")
display.grid(row=0, columnspan=3)

def add_one():
display.config(text='1')

# Creating all number buttons
one = Button(window, text="1", height=10, width=10, command=add_one)
two = Button(window, text="2", height=10, width=10)
three = Button(window, text="3", height=10, width=10)
four = Button(window, text="4", height=10, width=10)
five = Button(window, text="5", height=10, width=10)
six = Button(window, text="6", height=10, width=10)
seven = Button(window, text="7", height=10, width=10)
eight = Button(window, text="8", height=10, width=10)
nine = Button(window, text="9", height=10, width=10)
zero = Button(window, text="0", height=10, width=10)

# Placing all number buttons
one.grid(row=1, column=0)
two.grid(row=1, column=1)
three.grid(row=1, column=2)
four.grid(row=2, column=0)
five.grid(row=2, column=1)
six.grid(row=2, column=2)
seven.grid(row=3, column=0)
eight.grid(row=3, column=1)
nine.grid(row=3, column=2)

# Creating all other buttons
add = Button(window, text="+", height=10, width=10)
subtract = Button(window, text="-", height=10, width=10)
equal = Button(window, text="=", height=10, width=10)

# Placing all other buttons
add.grid(row=4, column=0)
subtract.grid(row=4, column=1)
equal.grid(row=4, column=2)

window.mainloop()

最佳答案

您应该为此使用 StringVar。而您的回调需要获取 StringVar 的当前内容,对其进行修改,并使用修改后的字符串来设置 StringVar 的新值。像这样:

import tkinter as tk

window = tk.Tk()

# Creating main label
display_text = tk.StringVar()
display = tk.Label(window, textvariable=display_text)
display.grid(row=0, columnspan=3)

def add_one():
s = display_text.get()
s += '1'
display_text.set(s)

one = tk.Button(window, text="1", height=10, width=10, command=add_one)
one.grid(row=1, column=0)

window.mainloop()

顺便说一句,您应该根据 DRY 使用 for 循环来创建和布置您的按钮,从而使您的程序更紧凑一些。原则。

此外,使用 from tkinter import * 也不是一个好主意。它将 130 多个名称导入您的命名空间,如果您不小心将 Tkinter 名称用于您自己的变量或函数之一,则很容易造成名称冲突。

关于python - 我将如何修改/添加文本到 tkinter.Label?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38792787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com