from tkinter import *
class App():
def __init__(self, root):
self.root = root
def Function(self):
self.grid = []
for i in range(7):
row = []
for j in range(6):
row.append(Button(self.root,width=2,height=1,command=lambda i=i, j=j: self.Click1(i, j)))
row[-1].grid(row=i,column=j)
self.grid.append(row)
def Click1(self, i, j):
self.grid[i][j]["bg"]="blue"
root = Tk()
app = App(root)
app.Function()
root.mainloop()
我需要这个没有上课的功能。我尝试删除类选项,但我认为这将导致其他一切的链式效果。请帮我删除课程并保留方法。
答案 0 :(得分:0)
嗯,你可以这样做,但我建议你不要这样做。但首先,一个可能的解决方案。这是基于我开始使用的东西:而不是类,你使用一个运行循环的主函数,并将所有方法作为子定义。外部函数包装器是可选的,但非常有用。它会在GUI退出时清除GUI创建的所有变量。此外,它允许您安全地导入脚本,并仅在需要时启动它。
def App():
root = tk.Tk()
#app = App(root)
def Function():
grid = []
for i in range(7):
row = []
for j in range(6):
row.append(ttk.Button(root,command=lambda i=i, j=j: Click1(i, j)))
row[-1].grid(row=i,column=j)
grid.append(row)
return grid
grid = Function()
def Click1(i, j):
grid[i][j]["bg"]="blue"
root.mainloop()
App()
一些关键点:
此脚本实际上并不起作用。由于它无法识别的事物(例如"身高"和宽度"),它会抛出大量异常。我猜你的版本与我的版本有什么不同?不过,它创建了一个按钮网格,这是我想的第一步。
所有selfs
必须继续,因为您不再使用课程
所有方法,现在是subdef,必须返回他们应该创建或使用全局变量的变量,因为self.something
不再可用。
现在,来自最初以这种风格构建GUI的人的一些建议:不要!为了您自己的利益。
随着它的发展,它变得越来越难以管理和扩展,尤其是调试和简单阅读。
如果您计划从其他地方导入您的作品,它可能无法与其他脚本一起使用。
当你最终放弃并接受课程时,就像我一样,将你创建的所有内容(后面)翻译成课程将会非常繁琐。
使用tkinter可以使用类。