Python Tkinter更改标签文本

史考特

我知道有很多关于tkinter的问题,但是我看了一堆,但似乎没有一个对我有帮助。

import tkinter

class Calculator:

  def __init__(self):
    window = tkinter.Tk()
    window.geometry("200x300")
    window.title("Calculator")

    lbl = tkinter.Label(window, text="placeholder", bg="blue", textvariable="labelText")
    lbl.grid(row=0, column=0, columnspan=3)

    self.firstNumArray = []
    self.secondNumArray = []
    self.operation = ""
    self.currentNum = "first"

    def appendNumber(self, number):
      print("Appending Number")
      if self.currentNum == "first":
        self.firstNumArray.append(number)
        print("".join(str(x) for x in self.firstNumArray))
        lbl.config(text="".join(str(x) for x in self.firstNumArray))
        window.update()
      else:
        self.secondNumArray.append(number)

    for i in range(1,4):
      string = "Creating button at ({0},{1})".format(0,i)
      print(string)
      button = tkinter.Button(text=i, command=lambda: appendNumber(self, i))
      button.grid(row=1, column=i-1)

    for i in range(1,4):
      string = "Creating button at ({0},{1})".format(1,i)
      print(string)
      button = tkinter.Button(text=i+3, command=lambda: appendNumber(self, i+3))
      button.grid(row=2, column=i-1)

    for i in range(1,4):
      string = "Creating button at ({0},{1})".format(2,i)
      print(string)
      button = tkinter.Button(text=i+6, command=lambda: appendNumber(self, i+6))
      button.grid(row=3, column=i-1)


    div = tkinter.Button(text="/")
    mult = tkinter.Button(text="*")
    add = tkinter.Button(text="+")
    sub = tkinter.Button(text="-")

    add.grid(row=1, column=3)
    sub.grid(row=2, column=3)
    mult.grid(row=3, column=3)
    div.grid(row=4, column=3)

    button = tkinter.Button(text="0")
    button.grid(row=4, column=1)

    window.mainloop()



calc = Calculator()

当我启动程序时,窗口打开。当我单击按钮时,标签中的文本不会更改。我尝试过使用StringVaras作为textvariable,然后调用该set()函数,但这也不起作用。我认为这与功能范围有关。我必须将appendNumber()函数放置在内,__init__()因为出于某种原因self.lbl = tkinter.Label()根本无法弹出任何内容。

tobias_k

您的代码有一些问题。

  1. labelText当然应该是aStringVar而不是字符串...

    labelText = tkinter.StringVar()
    lbl = tkinter.Label(window, bg="blue", textvariable=labelText)
    lbl.grid(row=0, column=0, columnspan=3)
    
  2. 现在,您可以使用labelText.set来更新文本。另外,不需要self参数或window.update

    def appendNumber(number):
        if self.currentNum == "first":
            self.firstNumArray.append(number)
            labelText.set("".join(str(x) for x in self.firstNumArray))
        else:
            self.secondNumArray.append(number)
    
  3. 您可以使用//整数(!)除法)和%(模数)操作将所有按钮置于一个循环中另外,请注意,变量中的变量lambda是在调用函数时评估的,而不是在声明函数时评估的,即所有变量lambdas将使用i9在这种情况下)的最后一个值-参见例如此处作为补救措施,使用lambda n=i+1: appendNumber(n)

    for i in range(9):
        btn = tkinter.Button(text=i+1, command=lambda n=i+1: appendNumber(n))
        btn.grid(row=i//3+1, column=i%3)
    
  4. 并不是真正的问题,但是由于不需要引用这些按钮,因此可以使代码更紧凑(其他代码相同):

    tkinter.Button(text="/").grid(row=1, column=3)
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带Tkinter标签的Python参考更改文本

来自分类Dev

如何在不按 Python3 中的按钮的情况下更改 tkinter 标签的文本?

来自分类Dev

在Python TkInter中更新标签文本

来自分类Dev

Kivy用python更改标签文本

来自分类Dev

Python 更改当前 tkinter 文本

来自分类Dev

Python Tkinter更改某些文本范围的文本背景

来自分类Dev

Python TKinter在文本小部件中获得clicked标签

来自分类Dev

Tkinter,canvas.rectangle中的标签/文本[python]

来自分类Dev

Tkinter将标签添加到文本(Python)

来自分类Dev

更新页面类python中的tkinter标签文本

来自分类Dev

如何使用python更改基维语言中的标签文本

来自分类Dev

无法在Kivy Python中动态更改标签文本

来自分类Dev

Python Tkinter 用行和列更改按钮文本

来自分类Dev

在 Python Tkinter 小部件中更改(更新)文本

来自分类Dev

如何使用文件中的文本和 tkinter python 中的条目将文本附加到标签

来自分类Dev

Python Tkinter标签方向

来自分类Dev

Tkinter Python销毁标签

来自分类Dev

Python Tkinter标签方向

来自分类Dev

通过在python 3和tkinter中使用colorchooser更改tkinter窗口中文本的颜色

来自分类Dev

如何更改 Tkinter 标签中文本的文本间距?

来自分类Dev

Tkinter,Python:如何保存在“输入”小部件中输入的文本?如何移动标签?

来自分类Dev

Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

来自分类Dev

Tkinter,Python:如何保存在“输入”小部件中输入的文本?如何移动标签?

来自分类Dev

Python - 我可以使用 lambda 函数通过 tkinter 生成重复的 GUI 吗?(标签/文本/按钮)

来自分类Dev

python tkinter如何更改特定网格空间上的小部件的标签?

来自分类Dev

Python Tkinter更改变量标签的状态和状态栏

来自分类Dev

Python Tkinter标签刷新失败

来自分类Dev

如何在Python中按下按钮时将标签的文本更改为文件名?

来自分类Dev

如何更改另一个类中单击的按钮的文本?(Python-tkinter)

Related 相关文章

  1. 1

    带Tkinter标签的Python参考更改文本

  2. 2

    如何在不按 Python3 中的按钮的情况下更改 tkinter 标签的文本?

  3. 3

    在Python TkInter中更新标签文本

  4. 4

    Kivy用python更改标签文本

  5. 5

    Python 更改当前 tkinter 文本

  6. 6

    Python Tkinter更改某些文本范围的文本背景

  7. 7

    Python TKinter在文本小部件中获得clicked标签

  8. 8

    Tkinter,canvas.rectangle中的标签/文本[python]

  9. 9

    Tkinter将标签添加到文本(Python)

  10. 10

    更新页面类python中的tkinter标签文本

  11. 11

    如何使用python更改基维语言中的标签文本

  12. 12

    无法在Kivy Python中动态更改标签文本

  13. 13

    Python Tkinter 用行和列更改按钮文本

  14. 14

    在 Python Tkinter 小部件中更改(更新)文本

  15. 15

    如何使用文件中的文本和 tkinter python 中的条目将文本附加到标签

  16. 16

    Python Tkinter标签方向

  17. 17

    Tkinter Python销毁标签

  18. 18

    Python Tkinter标签方向

  19. 19

    通过在python 3和tkinter中使用colorchooser更改tkinter窗口中文本的颜色

  20. 20

    如何更改 Tkinter 标签中文本的文本间距?

  21. 21

    Tkinter,Python:如何保存在“输入”小部件中输入的文本?如何移动标签?

  22. 22

    Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

  23. 23

    Tkinter,Python:如何保存在“输入”小部件中输入的文本?如何移动标签?

  24. 24

    Python - 我可以使用 lambda 函数通过 tkinter 生成重复的 GUI 吗?(标签/文本/按钮)

  25. 25

    python tkinter如何更改特定网格空间上的小部件的标签?

  26. 26

    Python Tkinter更改变量标签的状态和状态栏

  27. 27

    Python Tkinter标签刷新失败

  28. 28

    如何在Python中按下按钮时将标签的文本更改为文件名?

  29. 29

    如何更改另一个类中单击的按钮的文本?(Python-tkinter)

热门标签

归档