2015-07-16 2 views
-2

Я действительно застрял на basilary вещи: у меня есть этот кодпроблемы с обновлением метки Tkinter

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() 

Когда я бегу это все время, что я нажимаю на кнопку она создать новую метку, но Я хочу только обновить текст метки1.

+0

1. Не связывайте свои методы геометрии. Вы сделали это правильно с 'frame1', но неправильно с' label1' и 'puls1'. 2. Каждый раз, когда вы нажимаете кнопку, он создает новый ярлык, потому что вы ему сказали. Сначала создайте метку в 'mainscreen()', а затем 'cd()' просто обновите ее с помощью label1.config (text = e) '. – TigerhawkT3

+0

Ум сейчас у меня следующая ситуация: в mainscreen() у меня есть label1 = Label (mainscreen) .pack, но когда я нажимаю puls1, он дает мне erro, который говорит, что в cd() label1 не определен. – Terfysgol

+0

Затем создайте «label1» где-нибудь в безопасности от сбора мусора (вне функции). И снова, не связывайте методы геометрии. – TigerhawkT3

ответ

0

Это то, что вы после:

def cd(): 

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

, а затем в верхней части вашей программы после Вашего импорта вам нужно поставить:

label1 = Label() 
label1.pack() 

Пожалуйста, обратите внимание, что я не предлагаю это хорошая структура программы, но это зависит от вас, чтобы разобраться. Этот ответ - просто краткое решение, чтобы предоставить вам достаточно информации, чтобы выработать все остальное, что вам нужно.

Также вы можете удалить линию import tkinter as tk уже импортирует tkinter.

Смежные вопросы