Я хотел иметь три Frame
(s), чтобы сделать таблицу кнопок. Но я не мог придумать, как заставить это хоть как-то работать. Изменение серийного номера кадров все испортит.
Во-первых, каждая кнопка получит свой Frame
- ForEach()
метод.
Во-вторых, каждая строка будет соответствовать методу Frame
- ForEachRow()
.
В-третьих, все строки и столбцы находятся в одном методе Frame
- ForWhole()
.
Но когда я запускаю код, результат показывает изображение ниже вывод кода . Я просто не понимаю порядок таблицы в выводе. Потому что я хочу, чтобы
ForEach()
было вверху, а затем ForEachRow()
и ForWhole()
внизу.
Но если я изменю порядковый номер таблиц в моем коде, то первая строка или столбец будет отделена от красный или желтый таблицы или от обоих .
Этот вид вывода показывает, когда серийный номер ForWhole()
-> ForEach()
-> ForEachRow()
испорченный вывод . Что происходит с этим кодом?
ForWhole()
-> ForEachRow()
-> ForEach
дает этот вывод
import tkinter as tk
window = tk.Tk()
row = int(input("Enter the number of row: "))
col = int(input("Enter the number of cols: "))
def ForEach():
for i in range(row):
for j in range(col):
frame3 = tk.Frame(
master=window,
relief=tk.RIDGE,
borderwidth=5,
bg="red",
)
frame3.grid(row=i,column=j)
button = tk.Button(
relief=tk.RAISED,
master=frame3,
text=f"Row {i}\nColumn {j}",
bg="cyan",
)
button.pack()
def ForEachRow():
for i in range(row):
frame1 = tk.Frame(
master=window,
relief=tk.RIDGE,
borderwidth=5,
bg="yellow",
)
frame1.grid(row=i)
for j in range(col):
button = tk.Button(
relief=tk.RIDGE,
master=frame1,
text=f'Row {i}\nColumn {j}',
bg="cyan"
)
button.grid(row=i,column=j)
def ForWhole():
frame2 = tk.Frame(
master = window,
relief=tk.RIDGE,
borderwidth=5,
bg="blue"
)
frame2.grid()
for i in range(row):
for j in range(col):
button = tk.Button(
relief=tk.RAISED,
master=frame2,
text=f"Row {i}\nColumn {j}",
bg="cyan",
)
button.grid(row=i,column=j)
ForEach()
ForEachRow()
ForWhole()