Как сделать сетку кнопок 9 х 9 в tkinter? - PullRequest
0 голосов
/ 06 апреля 2019

Для игры, которую я делаю, мне нужна сетка кнопок 9 х 9, сделанная с помощью tkinter. есть идеи как это сделать? И если бы кнопки могли иметь случайно выбранные числа в них от 1 до 9., было бы оценено также.

Это то же самое, что и другие, но я не понимаю, как использовать то, что они используют (например, классы) и как изменить сетку так, чтобы она была 9 x 9.

Я попытался сделать цикл for для этого, но он не работает вот так:

import tkinter

row = 1
column = 1
button = ["1","2","3","4","5","6","7","8","9"]

for x in button:
    button = tkinter.Button(bg="black", activebackground="white",width=2)
    button.grid(row=row, column=column)
    column = column + 1
    if column == "9": 
        row = row + 1
        column = 1
    else:
        column = column + 1

Спасибо

1 Ответ

0 голосов
/ 06 апреля 2019

Я не уверен, но я думаю, что вам нужно 3x3 с 9 кнопками внутри, поэтому я сделал код для 3x3.

Я использую два цикла for, чтобы сделать это.И it, чтобы получить значение из списка.Это проще.

Я использую random.shuffle, чтобы получить список с элементами в случайном порядке.

Не присваивая Button переменной button, которую вы уже используете для сохранения списка.

import tkinter as tk
import random

button = ["1","2","3","4","5","6","7","8","9"]
random.shuffle(button)

root = tk.Tk()

i = 0
for x in range(3):
    for y in range(3):
        number = button[i]
        btn = tk.Button(text=number, bg="black", activebackground="white", width=2)
        btn.grid(row=y, column=x)
        i += 1

root.mainloop()

enter image description here

РЕДАКТИРОВАТЬ: Я мог бы также использовать inter() и next() вместо i

import tkinter as tk
import random

button = ["1","2","3","4","5","6","7","8","9"]
random.shuffle(button)

root = tk.Tk()

it = iter(button)
for x in range(3):
    for y in range(3):
        number = next(it)
        btn = tk.Button(text=number, bg="black", activebackground="white", width=2)
        btn.grid(row=y, column=x)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...