【问题标题】:problems with the update of a label Tkinter标签 Tkinter 更新的问题
【发布时间】:2015-10-06 13:21:12
【问题描述】:

我真的被困在一个基本的事情上:我有这个代码

from tkinter import *
import sys

import subprocess

import tkinter as tk

def cd():  
    f=(subprocess.check_output("net view"))
    e=(f.decode(sys.stdout.encoding))
    label1=Label(text=e).pack()


def mainscreen(): 
    mainscreen=Tk()
    mainscreen.title("Terfysgol's kit V 2.0")
    frame1=Frame(mainscreen)
    frame1.pack()
    puls1=Button(frame1,text="List of device", borderwidth= "2",command= cd).pack()

mainscreen()

当我一直运行它时,我按下按钮它会创建一个新标签,但我只想更新 label1 的文本。

【问题讨论】:

  • 1.不要链接你的几何方法。你用frame1 正确地做到了,但用label1puls1 做错了。 2. 每次你按下按钮,它都会创建一个新标签,因为你告诉它这样做。首先在mainscreen() 中创建标签,然后让cd() 简单地用label1.config(text=e) 更新它。
  • 嗯现在我有以下情况:在 mainscreen() 我有 label1= Label(mainscreen).pack 但是当我按下 puls1 它给我一个错误,说在 cd() label1 不是已定义。
  • 然后在安全的地方创建label1 以防止垃圾收集(在函数之外)。同样,不要链接几何方法。

标签: python windows button tkinter label


【解决方案1】:

这就是你所追求的:

def cd():

    f=(subprocess.check_output("net view"))
    e=(f.decode(sys.stdout.encoding))
    label1.config(text = e)

然后在导入之后在程序的顶部放置:

label1 = Label()
label1.pack()

请注意,我并不是说这是一个好的程序结构,而是由你来解决。这个答案只是一个快速解决方案,可以为您提供足够的信息来解决您需要的其余内容。

您也可以删除已经导入 tkinter 的 import tkinter as tk 行。

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2017-11-18
    • 2015-12-08
    • 2015-05-24
    相关资源
    最近更新 更多