【发布时间】:2017-10-22 01:58:10
【问题描述】:
我有这个简单的 5x5 按钮网格:
from tkinter import *
class App():
def __init__(self, root):
self.root = root
self.TopFrame = Frame(root)
self.BottomFrame = Frame(root)
self.TopFrame.grid(row=0)
self.BottomFrame.grid(row=6)
buttonQ = Button(self.BottomFrame, text="Quit", command=quit)
buttonS = Button(self.BottomFrame, text="Save", command=self.saveToFile)
buttonS.grid(row=0, column=0, padx=10)
buttonQ.grid(row=0, column=1, padx=10)
def Function(self):
self.grid = []
for i in range(5):
row = []
for j in range(5):
row.append(Button(self.TopFrame,width=6,height=3,command=lambda i=i, j=j: self.getClick(i, j),background='gray'))
row[-1].grid(row=i,column=j)
self.grid.append(row)
def getClick(self, i, j):
orig_color = self.grid[i][j].cget('bg')
if orig_color=="red":
self.grid[i][j]["bg"]="gray"
else:
self.grid[i][j]["bg"]="red"
def saveToFile(self):
myFile=open("example.txt", 'w')
for line in range(5):
for column in range(5):
bg_color = self.grid[line][column].cget('bg')
if bg_color == "red":
myFile.write("1 ")
else:
myFile.write("0 ")
myFile.write("\n")
#myFile.flush()
myFile.close()
myFile = open("example.txt",'r')
print(myFile.read())
myFile.close()
root = Tk()
app = App(root)
app.Function()
root.mainloop()
我想将其乘以 16 次(排列在一个有 4 行和 4 列的矩阵中 - 一个单元格有一个 5x5 按钮矩阵),它们之间有空格以及下面的“退出”和“保存”按钮。我只能通过使用框架来实现吗?有没有办法将 5x5 按钮网格乘以 16 并排列为 4x4 矩阵?
我是 Python 编程新手,所以请温柔:)
【问题讨论】:
-
这个答案可能会有所帮助 - grid within a frame
标签: python button matrix tkinter grid