Tkinter - 网格定位对某些widjets完全没有反应

时间:2018-01-05 16:07:50

标签: python tkinter

我有这个代码(一些代码被删除):

root = tk.Tk()
root.title("PyCipher")
root.iconbitmap('D:\\PyCipher\\media\\icon.ico')
root.geometry('510x325')
root.resizable(width=False, height=False)
root.columnconfigure(10, weight=1)
root.rowconfigure(20, weight=1)
rootframe = tk.Frame(root)
rootframe.grid(row=10, column=5)

headertxt = tk.Label(root, text='PyCipher', font=('Helvecta', 20, 'bold'), anchor='c')
headertxt.grid(row=3, column=5)

entrybox = tk.Entry(root, width=60)
entrybox.grid(row=7, column=5)

entrylabel = tk.Label(root, text='Enter Text to convert')
entrylabel.grid(row=9, column=5)

output = tkst.ScrolledText(master=rootframe,wrap=tk.WORD, width=50, height=10)
output.grid(row=10, column=8)

outputlabel = tk.Label(root, text='Output text')
outputlabel.grid(row=15, column=5)

encodebtn = tk.Button(root, text='Encode', fg='green', command=encode, width=5)
encodebtn.grid(row=7, column=4)

decodebtn = tk.Button(root, text='Decode', fg='orange', command=decode, width=5)
decodebtn.grid(row=7, column=6)

copybtn = tk.Button(root, text='Copy', fg='blue', command=copy, width=5)
copybtn.grid(row=17, column=5)

clrbtn = tk.Button(root, text='Clear', fg='red', command=clear, width=5)
clrbtn.grid(row=18, column=5)


root.mainloop()

问题在于按钮。当我尝试将列值更改为2-4或6-9时,元素完全不响应位置更改。但是当我将它设置为第5列时,它通过进入另一个widjet完全打破了ui。为什么我不能移动那些其他列中的任何元素,但是第5列完全将元素移动到它应该是的区域?填充最终填充整个UI,即使元素远离其他元素,它仍然存在相同的问题。

2 个答案:

答案 0 :(得分:1)

网格布局管理器的规则是它将布局压缩到行或列中任何窗口小部件的最大大小。因此,列1,2和3的宽度为零,因为它们不包含小部件。如果将第4列中的窗口小部件移动到其中一列,则不会对布局的可见状态产生影响。第4列现在将具有零宽度,其空间将被移动窗口小部件的列占用。至于你的陈述'填充最终填充整个用户界面',我不明白你的意思,在那里无法帮助你。

答案 1 :(得分:0)

查看grid_rowconfiguregrid_columnconfigure here

我似乎记得刚才有类似的问题。您需要为每列/每行赋予权重。