Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改标签文本,Tkinter_Python_Tkinter_Label - Fatal编程技术网

Python 更改标签文本,Tkinter

Python 更改标签文本,Tkinter,python,tkinter,label,Python,Tkinter,Label,下面是我的代码片段: def message(name, button): button['state'] = DISABLED mgs_label = ttk.Label(root) if button["text"] == "Encryption": mgs_label.pack_forget() mgs = encryption(name) mgs_label = ttk.Label

下面是我的代码片段:

def message(name, button):
    button['state'] = DISABLED
    mgs_label = ttk.Label(root)

   if button["text"] == "Encryption":

       mgs_label.pack_forget()
       mgs = encryption(name)
       mgs_label = ttk.Label(root, text=mgs).pack(side=LEFT)

   if button["text"] == "Decryption":

      mgs_label.pack_forget()
      mgs = decryption(name)
      mgs_label = ttk.Label(root, text=mgs).pack(side=LEFT)
当我点击按钮时,无论是加密按钮还是解密按钮,它都会出现在提到的位置。 以下是快照:

当我点击另一个按钮时,文本位于前一个按钮之后,我想删除前一个文本,然后显示最后一个mgs

第二个快照:

即使我尝试创建全局变量,但问题是加密或解密已完成,但mgs未在GUI上显示。以下是用于此的代码:

encryption_label = ttk.Label(root)
decryption_label = ttk.Label(root)
def message(name, button):
    button['state'] = DISABLED
    global encryption_label, decryption_label
    if button["text"] == "Encryption":

       if decryption_label.winfo_exists():
          decryption_label.pack_forget()

       mgs = encryption(name)
       encryption_label["text"] = mgs
       encryption_label.pack(side=LEFT)

    if button["text"] == "Decryption":

       if encryption_label.winfo_exists():
          encryption_label.pack_forget()

    mgs = decryption(name)
    decryption_label["text"] = mgs
    decryption_label.pack(side=LEFT)

我建议只创建一次标签,并使用label.configure更改文本。 您应该提供一个工作示例,而不是代码段。我给你做了一个。 谢谢你的提问

import tkinter as tk
from tkinter import ttk
def e():
    message(None,x_button)
def d():
    message(None,y_button)
def message(name, button):
    #button['state'] = tk.DISABLED

    if button["text"] == "Encryption":
        mgs_label.configure(text = 'encrypted stuff')

    if button["text"] == "Decryption":
        mgs_label.configure(text = 'decrypted stuff')
  
root = tk.Tk()
x_button = tk.Button(root,text = 'Encryption',
                     command = e)
y_button = tk.Button(root,text = 'Decryption',
                    command = d )
mgs_label = ttk.Label(root)
y_button.pack()
x_button.pack()    
mgs_label.pack()
root.mainloop()

尝试使用不同的标签变量进行
加密
解密
states@crackanddie我试过并相应地编辑了这个问题,但仍然不起作用。@HimanshuGurjar第二种方法更好,但您的缩进似乎不正确。由于在第二种方法中,您使用的是两个标签,因此无需在每次调用消息时设置文本,而只需在声明本身中设置文本
encryption\u label=ttk.label(root,text='Successfull encrypted')
。但更好的方法是声明标签的单个全局实例并更新文本。第一种方法不起作用,因为每次调用消息时都要创建标签的新实例,因此使用
mgs\u label.pack\u forget()
将永远不会隐藏以前的标签。另外,在
mgs\u label=ttk.label(root,text=mgs).pack(side=LEFT)
msg\u label
None
,因为
pack
返回
None
@JacksonPro是的,现在我明白了,谢谢你的建议。但即使使用单个全局标签变量,它也不起作用,因此,我只是在调用者函数中创建了一个标签,并将其作为参数传递给被调用函数,然后对其进行配置。