Tkinter.Label在按钮按下后不显示
我试图做,那我按下按钮后,我得到了标签中显示的信息,但是,我似乎无法使标签出现在GUI 。我得到的错误,当我按下“Vartotojo informacija>键入名称,然后按 “rodyti informacija”,我就在这行w.pack(LEFT)
错误(应该是95行-ISH):Tkinter.Label在按钮按下后不显示
完全回溯:
'id' is not recognized as an internal or external command,
operable program or batch file.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\lib\lib-tk\Tkinter.py", line 1542, in __call__
return self.func(*args)
File "tkinter-label-not-showing-after-button-pressed.py", line 96, in <lambda>
myg1 = Button(virsus, text="Rodyti informacija", command=lambda: gauti())
File "tkinter-label-not-showing-after-button-pressed.py", line 103, in gauti
w.pack(LEFT)
File "C:\Python\lib\lib-tk\Tkinter.py", line 1946, in pack_configure
+ self._options(cnf, kw))
File "C:\Python\lib\lib-tk\Tkinter.py", line 1169, in _options
for k, v in cnf.items():
AttributeError: 'str' object has no attribute 'items'
我的代码:
from Tkinter import *
import tkMessageBox
from sys import version_info
import subprocess
root = Tk()
root.title("Administravimas")
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
def filtras():
root = Tk()
root.title("Filtravimas pagal uzklausa")
root.geometry("300x100")
tekstas = Text(root, height=1, width=15)
tekstas.pack(side=TOP)
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
myg1 = Button(virsus, text="Filtruoti", command=lambda: gauti())
myg1.pack(side=BOTTOM)
def gauti():
imti=tekstas.get("1.0", "end-1c")
subprocess.call("grep -i '{imti}' /var/log/syslog > "
"logai/uzklausa/$(date +%d_%m_%Y.txt)".format(imti=imti),
shell=True)
def vartotojas():
root = Tk()
root.title("Filtravimas pagal vartotoju prisijungimus")
root.geometry("300x100")
tekstas = Text(root, height=1, width=15)
tekstas.pack(side=TOP)
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
myg1 = Button(virsus, text="Filtruoti", command=lambda: gauti())
myg1.pack(side=BOTTOM)
def gauti():
imti = tekstas.get("1.0", "end-1c")
subprocess.call("grep -i '{imti}' /var/log/auth.log > "
"logai/vartotojai/$(date +%d_%m_%Y.txt)".format(imti=imti),
shell=True)
def portas():
root = Tk()
root.title("Atidaryti/uzdaryti portus")
root.geometry("300x100")
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
myg1 = Button(virsus, text="Atidaryti porta")
myg2 = Button(virsus, text="Uzdaryti porta")
myg1.pack(side=LEFT)
myg2.pack(side=LEFT)
root.mainloop()
def administ():
root = Tk()
root.title("Administrouti vartotojus")
root.geometry("400x100")
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
myg1 = Button(virsus, text="Kurti vartotoja")
myg1.pack(side=LEFT)
myg2 = Button(virsus, text="Naikinti vartotoja")
myg2.pack(side=LEFT)
myg3 = Button(virsus, text="Keisti vartotojo grupe")
myg3.pack(side=BOTTOM)
root.mainloop()
def informacija():
root = Tk()
root.title("Vartotoju informacija")
root.geometry("400x100")
tekstas = Text(root, height=1, width=15)
tekstas.pack(side=TOP)
virsus = Frame(root)
virsus.pack()
apacia = Frame(root)
apacia.pack(side=BOTTOM)
myg1 = Button(virsus, text="Rodyti informacija", command=lambda: gauti())
myg1.pack(side=BOTTOM)
def gauti():
imti = tekstas.get("1.0", "end-1c")
info = subprocess.call("id '{imti}' ".format(imti=imti), shell=True)
w = Label(root, text= "info")
w.pack(LEFT)
root.mainloop()
myg1 = Button(virsus, text="Filtruoti pagal uzklausa", command=filtras)
myg2 = Button(apacia, text="Filtrouti pagal vartotoju prisijungimus", command=vartotojas)
myg3 = Button(virsus, text="Atidaryti/uzdaryti portus", command=portas)
myg4 = Button(apacia, text="Administruoti vartotojus", command=administ)
myg5 = Button(apacia, text="Vartotojo informacija", command=informacija)
myg1.pack(side=LEFT)
myg2.pack(side=RIGHT)
myg3.pack(side=LEFT)
myg4.pack(side=RIGHT)
myg5.pack(side=RIGHT)
root.mainloop()
对于我所看到的,该语句w.pack(LEFT)
只需要一个关键字(即w.pack(side=LEFT)
没有关键字,预计另一种参数(主叫help(Button.pack)
时,你会看到这个POSITI onal参数将是一本字典)
谢谢你,工作。但是,现在当我按下“rodyti informacija”按钮时,标签会给我显示“0”,当它假设显示有关用户的信息时。 – Lenton
@Lenton;我不是很明白你的意思吗?并不能重现你的问题。您现在希望标签'w'显示刚才在文本框中输入的信息?然后在标签中指定; 'w = Label(root,text = imti)'(顺便说一句,在请求信息时,我认为通常widget ['Entry'](http://effbot.org/tkinterbook/entry.htm) ) – arrethra
我的意思是在我按下按钮之后,shell命令与文本框中的变量一起运行,一切正常,除了我希望shell命令结果显示在标签中,但它在标签中显示为“0”然而,我在命令提示符下正确地显示了shell命令的结果。 – Lenton
部分或全部缩进不正确。 –
添加了完整的代码,其余部分未完成,但我只需要 'def informacija()'部分 – Lenton
的帮助我无法再现您说的属性错误。哪个按钮被按下?请再次[编辑]您的问题,并将该信息与完整回溯一起追加到发生错误的行上。 – martineau