gpt4 book ai didi

Python tkinter 小部件在更改时调整大小

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:27 24 4
gpt4 key购买 nike

当我按下切换标题按钮时,如何防止此应用程序中的小部件改变大小?

我希望两个 Treeview 总是分别占据窗口宽度的 50%

目前左边的列会在列数增加/减少时调整大小

import tkinter as tk
from tkinter import ttk
def toggle_headings():
global htog
if htog==0:
t1.config(columns=columnswide)
for i,h in enumerate(columnswide):
c = ('#')+str(i)
t1.heading(c,text=h)
htog = 1
else:
t1.config(columns=columns)
t1.heading(columns[0],text=columns[0])
htog = 0
htog = 0

app = tk.Tk()

columnswide = ['abcd' for i in range(5)]
columns = ['abcd']
columnsbutton = tk.Button(app,text='toggle headings',command=toggle_headings)

t1 = ttk.Treeview(app,selectmode='browse',columns=columns)
t2 = ttk.Treeview(app,selectmode='browse',columns=columnswide)
for i,h in enumerate(columnswide):
c = ('#')+str(i)
t2.heading(c,text=h)
t1.heading(columns[0],text=columns[0])
for i in range(10):
t1.insert('','end',text='testing '+str(i),values=['value'])
t2.insert('','end',text='testing '+str(i),values=['value' for i in range(5)])

columnsbutton.pack(side='top',fill='x',expand=1)
t1.pack(side='left',fill='both',expand=1)
t2.pack(side='left',fill='both',expand=1)

app.mainloop()

如果有人建议使用 .grid(),我已经尝试了以下方法:

import tkinter as tk
from tkinter import ttk
def toggle_headings():
global htog
if htog==0:
t1.config(columns=columnswide)
for i,h in enumerate(columnswide):
c = ('#')+str(i)
t1.heading(c,text=h)
htog = 1
else:
t1.config(columns=columns)
t1.heading(columns[0],text=columns[0])
htog = 0
htog = 0

app = tk.Tk()

columnswide = ['abcd' for i in range(5)]
columns = ['abcd']
columnsbutton = tk.Button(app,text='toggle headings',command=toggle_headings)

t1 = ttk.Treeview(app,selectmode='browse',columns=columns)
t2 = ttk.Treeview(app,selectmode='browse',columns=columnswide)
for i,h in enumerate(columnswide):
c = ('#')+str(i)
t2.heading(c,text=h)
t1.heading(columns[0],text=columns[0])
for i in range(10):
t1.insert('','end',text='testing '+str(i),values=['value'])
t2.insert('','end',text='testing '+str(i),values=['value' for i in range(5)])

columnsbutton.grid(row=0,column=0,columnspan=2,sticky='we')
t1.grid(row=1,column=0,sticky='nswe')
t2.grid(row=1,column=1,sticky='nswe')
app.grid_columnconfigure(0,weight=1)
app.grid_columnconfigure(1,weight=1)
app.mainloop()

最佳答案

更详细地解释@new_to_coding 的解决方案:

使用 grid_columnconfigure()对于 Tkinter .

作为grid_columnconfigure()的第一个参数您需要设置列索引。

请注意还有其他参数。例如,某些列在调整大小时可能比其他列增长得更多。

  • minsize :定义列的最小大小。请注意,如果一列完全为空,则即使设置了此选项也不会显示。
  • pad : 在设置整列的大小时,填充以添加到列中最大的小部件的大小。
  • weight :用于在列之间分配额外空间的相对权重。权重为 2 的列的增长速度是权重为 1 的列的两倍。默认值为 0,这意味着该列根本不会增长。
  • uniform :当提供非空值时,将列放在 uniform group 中与具有相同值的其他列 uniform .分配属于统一组的列的空间,以便它们的大小始终与其 weight 严格成比例。值(value)观。

关于Python tkinter 小部件在更改时调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44055236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com