我是一名初学程序员,想在tkinter点击底部之后打开一个新窗口。我在网上看了一下并试了一些东西,但我并不是真的理解它并且不断出错。这是我现在得到的错误。
File "C:\Python33\lib\tkinter\__init__.py", line 2046, in _setup
self.tk = master.tk
AttributeError: 'App' object has no attribute 'tk'
这是我的代码
from tkinter import *
import random
player_dice = []
class App:
def __init__(self, master):
for i in range(1,6):
x = random.randint(1,6)
player_dice.append(x)
self.label = Label(master, text = x , fg = "red").grid(row =0, column =i+1)
self.label = Label(master, text = "Dice:" , fg = "red").grid(row =0, column =1)
self.hi_one = Button(master, text="one", command=self.say_one).grid(row = 1, column = 1)
def say_one(self):
print ("1")
window = Toplevel(self)
self.label = Label(window, text = "you selected one" , fg = "red").grid(row =3, column =3)
root = Tk()
app = App(root)
root.mainloop()
感谢您的帮助
答案 0 :(得分:2)
在致电root
时传递self
,而不是Toplevel
:Toplevel(root)
。或省略参数:Toplevel()
from tkinter import *
import random
player_dice = []
class App:
def __init__(self, master):
for i in range(1,6):
x = random.randint(1,6)
player_dice.append(x)
self.label = Label(master, text = x , fg = "red").grid(row =0, column =i+1)
self.label = Label(master, text = "Dice:" , fg = "red").grid(row =0, column =1)
self.hi_one = Button(master, text="one", command=self.say_one).grid(row = 1, column = 1)
def say_one(self):
print ("1")
window = Toplevel(root) # self -> root
self.label = Label(window, text = "you selected one" , fg = "red").grid(row =3, column =3)
root = Tk()
app = App(root)
root.mainloop()