如何将标签宽度设置为另一个标签的宽度

时间:2016-07-10 21:41:30

标签: python-3.x tkinter

我正在为我的程序编写GUI(请参阅here获取CLI版本),其中一项任务是从dropbox下载信息文件并将其显示给用户。它下载的信息显示在标签中,然后从用户输入的文本和从程序输出的信息显示在此下面的第二个标签中。因为我可以更改它下载的信息,所以顶部标签的宽度是可变的,我希望底部标签更改为与顶部标签相同的宽度。

我已经使用以下代码尝试实现结果,但似乎没有任何效果,因为底部标签最终要么太长或太短:

conv.configure(width=inf.winfo_width())返回950

conv.configure(width=inf.cget('width'))返回0

conv.configure(width=inf['width'])返回0

conv.configure(width=len(max(open('information.txt'), key=len)))返回178(最长行的长度)

这是我写的GUI布局:

from tkinter import *
import urllib

root=Tk()
root.title("ARTIST AI")

inf=Label(root, relief="raised", text="INFORMATION", anchor=N, justify=LEFT)
inf.grid(row=0, column=0, columnspan=2)

conv=Label(root, height=10, relief="raised", anchor=N, justify=LEFT)
conv.grid(row=1, column=0, columnspan=2)

ent=Text(root, width=40, height=2)
ent.grid(row=2, column=0)

sub=Button(root, text="Submit", width=10, height=2, relief="raised", command=getinput)
sub.grid(row=2, column=1)

try:        #Downloads the inforrmation from the Info.txt file in my dropbox account to be displayed to the user.
    info=urllib.request.urlopen("https://www.dropbox.com/s/h6v538utdp8xrmg/Info.txt?dl=1").read().decode('utf-8')
    f=open("information.txt", "w")
    f.write(info)
    f.close()
except urllib.error.URLError:
    try:
        info=open("information.txt", "r").read()
        info=info.replace("\n\n", "\n")
        info="No internet connection available: using last available information"+"\n\n"+info
    except FileNotFoundError: info="No information available. Will download information on next valid connection."
inf.configure(text=info)
conv.configure(width=length_of_inf_label)

mainloop()

如果有人知道如何做到这一点,我们非常感谢任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

不知道您是否再需要此功能,但这就是我的方法。有点粗糙,但有效:

label1 = Label(root, text="Start")label1.pack({"side": "top"})
label2 = Label(root, text="End")
label2.config(width=len(label1.cget('text'))-1)
label2.pack({"side": "top"})