Tkinter可变大小列表

外囊

我正在尝试使用Tkinter制作按钮菜单。我有一个随机生成的文件列表,其属性为元组(名称,大小,链接),需要将它们排列在网格中。由于按钮的数量已更改,因此无法将每个按钮设置为网格。这是我尝试的方法:

    def selected_button(file):
        print(f"File: {file[0]}, {file[1]}, Link: {file[2]}")

    for file in files:
        fileButton = Button(root, text= file[0],command= lambda: selected_button(file).grid()`

问题:

  • 单击按钮时传递的变量“文件”始终是最后生成的按钮。
  • 按钮将它们排列成一列中的一长串-我需要一个漂亮的正方形/矩形。

如果我遗漏了任何信息,请发表评论,我会及时答复。

tgikal

问题1

lambda在迭代中存储当前值,需要在lambda函数(如)中将其调出command= lambda f = file: selected_button(f)

问题二

我通常用于制作按钮网格的方法是选择所需的宽度(可能为3宽),然后增加列,直到达到该点为止。达到该宽度后,重置列并增加行。

import tkinter as tk

# Testing
files = []
for x in range(12):
    files.append((f"Test{x}", f"stuff{x}", f"other{x}"))
# /Testing

def selected_button(file):
    print(f"File: {file[0]}, {file[1]}, Link: {file[2]}")

root = tk.Tk()

r, c = (0,0) # Set the row and column to 0.

c_limit = 3 # Set a limit for how wide the buttons should go.

for file in files:
    tk.Button(root,
              text= file[0],
              width = 20,
              # This will store what is currently in file to f
              # then assign it to the button command.
              command= lambda f=file: selected_button(f)
              ).grid(row = r, column = c)

    c += 1 # increment the column by 1
    if c == c_limit:
        c = 0 # reset the column to 0
        r += 1 # increment the row by 1

root.mainloop()

例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过可变大小列表在python中创建数据框

来自分类Dev

优化用于组合可变大小列表的算法

来自分类Dev

通过输入位置重新排列可变大小列表

来自分类Dev

cscfg中连接字符串的可变大小列表

来自分类Dev

可变大小的指针数组

来自分类Dev

C ++中的可变大小

来自分类Dev

按类型和日期以及可变大小的数据对对象列表进行排序和分组

来自分类Dev

R-将可变大小的列表平展到数据框?

来自分类Dev

通过合并包含可变大小列表的列在df中创建字典列

来自分类Dev

快速可变大小的容器c ++

来自分类Dev

传递可变大小的多维数组

来自分类Dev

可变大小的张量流常数

来自分类Dev

动态(即可变大小)的Fenwick树?

来自分类Dev

C ++ 11可变大小POD结构

来自分类Dev

AMPL可变大小集迭代

来自分类Dev

可变大小数组GLSL

来自分类Dev

可变大小的ffmpeg过滤器

来自分类Dev

创建可变大小的Excel表的副本

来自分类Dev

OpenGL:渲染可变大小的精灵

来自分类Dev

可变大小数组匹配

来自分类Dev

如何使程序声明可变大小的不确定大小的数组

来自分类Dev

C固定大小的数组被视为可变大小

来自分类Dev

如何用可变大小<p>填充固定大小的<div>?

来自分类Dev

C固定大小的数组被视为可变大小

来自分类Dev

Python:将元组列表(可变大小)转换为具有固定形状的数组状结构

来自分类Dev

Python:将元组列表(可变大小)转换为具有固定形状的数组状结构

来自分类Dev

读取具有可变大小的行的数据文件

来自分类Dev

shared_ptr中的可变大小对象

来自分类Dev

通过消息队列发送可变大小的缓冲区