#task is to create 4 buttons using the Canvas module in Tkinter
class Buttons:
def __init__(self, par2, par3, par4, par5, fill, xpos, ypos):
self.par2 = par2
self.par3 = par3
self.par4 = par4
self.par5 = par5
self.fill = fill
self.xpos = xpos
self.ypos = ypos
def display_button(self):
canvas.create_oval(self.par2, self.par3, self.par4, self.par5, fill=str(self.fill))
canvas.place(self.xpos, self.ypos)
#create the buttons using the parameters in def __init__
button1 = Buttons(100, 100, 300, 300, "grey", -25, 25)
button2 = Buttons(100, 100, 300, 300, "grey", 0, 0)
button3 = Buttons(100, 100, 300, 300, "grey", 100, 25)
button4 = Buttons(100, 100, 300, 300, "grey", 50, 50)
窗口和画布之前已经创建并且工作正常。 有人可以告诉我为什么当我运行程序时窗口中没有显示任何内容吗? 谢谢
看起来您没有在按钮实例上调用Buttons.display_button
方法。除非你这样做,否则你什么也看不到。
从代码的编写方式来看,canvas
是一个全局tk.Canvas
对象。每当你调用Buttons.display_button
时,你也在调用canvas.place
,这是用来替代canvas.pack
的 - 你确定这就是你想要做的吗?因为,这似乎不对。
我会从更简单的东西(有效的东西(开始,然后从那里开始。其他一些建议:我认为Buttons
不是该类的好名称,因为该类的实例应该代表单个按钮 - 我认为Button
是一个更好的名称。
此外,方法名称display_button
有点多余。我们已经知道此方法"显示"一个按钮,因为它是Button
类的一部分 - 我会称之为类似display
或render
.
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=200, height=200)
canvas.pack()
class Button:
def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
def render(self):
canvas.create_oval(*self.args, **self.kwargs)
button = Button(50, 50, 150, 150, fill="grey")
button.render()
root.mainloop()