gpt4 book ai didi

python - 如何从列表中定位 python 小部件标签?

转载 作者:行者123 更新时间:2023-12-01 09:24:59 25 4
gpt4 key购买 nike

来自this ,我创建了一个类似网格的表格。我尝试根据列表 ['5','4','3','2','1'] 将标签放置在列中。我得到的是标签的布局从顶部的 1 开始到 5。如何反转从顶部的 5 开始到底部的 1 的顺序?

from tkinter import *
import random

# Create variables for these for the grid width/height
width = 5
height = ['5', '4', '3', '2', '1']


def fill_auto():
for i in range(1, 6):
rd_row = random.randrange(0, 5)
rd_col = random.randrange(0, width)
rd_num = random.randrange(50, 100)
print(rd_row, rd_col, rd_num)
# Set the label text
matrix[rd_row][rd_col].config(text=str(rd_num))


root = Tk()
root.geometry('+0+0')
root.configure(bg='black')
frame1 = Frame(root)
frame1.pack()


# Helper function to create a label
def make_label(x, y):
label_box = 'box' + str(y)
l = Label(frame1, width=5, relief='solid', text=label_box)
l.grid(column=x, row=y)
return l


# Using list comprehension to create 2d list
matrix = [[make_label(x, y) for x in range(width)] for y in height]


frame2 = Frame(root)
frame2.pack()
btn = Button(frame2, text='start', command=fill_auto)
btn.grid(row=0, column=0)

root.mainloop()

最佳答案

make_label 函数中,您使用 y 作为标签文本行号,因此当标签为 5 时它将位于第五行。

矛盾的是,在您的matrix变量中,第一行实际上包含编号最高的标签。您可以通过更改标签之一来看到这一点:

matrix[1][1].config(text='test')

这不直观地产生了这个:

<小时/>

要使 GUI 的网格与矩阵一致,您可以在创建小部件时进行一些小更改:

# Helper function to create a label
def make_label(x, y, t):
label_box = 'box' + str(t)
l = Label(frame1, width=5, relief='solid', text=label_box)
l.grid(column=x, row=y)
return l

# Using list comprehension to create 2d list
matrix = [[make_label(x, y, t) for x in range(width)] for (y, t) in enumerate(height)]

这会产生这个:

关于python - 如何从列表中定位 python 小部件标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507474/

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