我试图让一个按钮在新窗口中显示一个表格,并向该窗口添加一个按钮以销毁自己。主要问题是表格显示在错误的窗口中。 感谢您的帮助。
我尝试自己做,但是我尝试的所有方法都不起作用。
import tkinter as tk
class MainWindow(tk.Frame):
counter = 0
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.button = tk.Button(self, text="Create new window",
command=self.create_window)
self.button.grid(padx = 5, pady = 5, row = 1, column = 3)
def create_window(self):
height = 2
width = 3
numberA=0
achievs = ["1", "2", "3", "4", "5", "6"]
self.counter += 1
t = tk.Toplevel(self)
t.wm_title("Window #%s" % self.counter)
for i in range(height): #Rows
for j in range(width): #Columns
t = tk.Label(text=achievs[numberA], relief=tk.RIDGE)
t.grid(row=i, column=j)
numberA = numberA + 1
t.mainloop
if __name__ == "__main__":
root = tk.Tk()
main = MainWindow(root)
main.grid(row=4, column=5, padx=5, pady=25)
root.mainloop()
如前所述,表格应该显示在顶层窗口中,并且如果可能的话,应该有一个按钮来破坏顶层窗口(我自己可能很难做到这一点)。
答案 0 :(得分:0)
您的代码中有一些错误,这似乎是因为您可能不熟悉编码,tkinter或两者都不是。
首先,您要创建一个
Toplevel()
窗口并将其分配给变量t
(t = tk.Toplevel(self)
),然后在创建网格时,而不是将网格值放入{您正在{1}}窗口中将网格值分配给保存Toplevel
窗口的变量
这不是tkinter的工作原理,要将元素添加到窗口中,您可以将该元素作为主元素,在这种情况下,网格值的主元素是变量Toplevel
这会将``create_window`函数更改为:
t = tk.Toplevel()
您要犯的另一个错误是tkinter的新用户的标准错误,即您正在为“顶级”窗口创建新的循环。
仅需要一个循环( def create_window(self):
height = 2
width = 3
numberA=0
achievs = ["1", "2", "3", "4", "5", "6"]
self.counter += 1
t = tk.Toplevel(self)
t.wm_title("Window #%s" % self.counter)
for i in range(height): #Rows
for j in range(width): #Columns
gridVal = tk.Label(t, text=achievs[numberA], relief=tk.RIDGE)
gridVal.grid(row=i, column=j)
numberA = numberA + 1
),而创建第二个循环将引起问题,因此您只需删除调用即可创建第二个循环(root.mainloop()
)
更改这些内容将为您提供这样的代码,该代码应该可以按您希望的方式工作:
t.mainloop