特金特。StringVar()。如何更新代码中的标签。

2024-10-03 02:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我在更新标签小部件(lab1_datum_in)时遇到问题。 我想在每次更改单选按钮时更改标签文本。 真的不知道怎么了。 有人能帮忙吗? 我的解释器是python3.4

提前谢谢!在

import tkinter

root = tkinter.Tk()

# Creating radiobuttons
v = tkinter.IntVar()
v.set(1)  # initializing the choice

transformation_types = [
    ("WGS84  -->  ED50(North of 62N)",1),
    ("WGS84  -->  ED50(South of 62N)",2),
    ("ED50(North of 62N)  -->  WGS84",3),
    ("ED50(South of 62N)  -->  WGS84",4),
    ]

datum_in_text = tkinter.StringVar()
datum_in_text.set('WGS84')


def ChangeDatumText():
    if v.get() == 1:
        global datum_in_text
        datum_in_text.set('WGS84')

    elif v.get() == 2:
        global datum_in_text
        datum_in_text.set('WGS84')

    elif v.get() == 3:
        global datum_in_text
        datum_in_text.set('ED50(North of 62N')

    elif v.get() == 4:
        global datum_in_text
        datum_in_text.set('ED50(North of 62N')


for txt, val in transformation_types:
    tkinter.Radiobutton(root,
                        text=txt,
                        padx=20,
                        variable=v,
                        command=ChangeDatumText,
                        value=val).grid()

lab1_datum_in = tkinter.Label(root, text=datum_in_text.get()).grid(row=9, column=1)


root.mainloop()

Tags: oftextingettkinterroot标签global
1条回答
网友
1楼 · 发布于 2024-10-03 02:40:27

正如@jornsharpe在注释中指出的,要从Label小部件上显示的文本,您需要将textvariable选项设置为StringVar类的控制变量,在您的例子中是datum_in_text。您的text选项用于显示一行或多行静态文本。在

这意味着您需要使用:

lab1_datum_in = tkinter.Label(
                    root, textvariable=datum_in_text).grid(row=9, column=1)

而不是你所拥有的。在

顺便说一句,您在ChangeDatumText()函数中拥有的所有那些global datum_in_text声明都是不必要的,只有第一个声明遇到时才会产生非致命的语法警告。因为您只调用全局变量的一个方法,而不是给变量名本身赋值,所以您甚至不需要这样做,但是如果您在其中放了一个也没有坏处,只需在函数的开头声明一次全局变量。在

相关问题 更多 >