所以我刚开始使用Tkinter,所以我决定制作一个非常简单的代码,只是在第一帧中向我展示一个“游戏”,在第二帧中向我展示命令(基本上只有4个箭头)。现在,我只是对command_frame进行编码。
我计算了将用于按钮的图像的大小,以便它们按我希望的方式适合框架。
但是当我运行代码时,我在按钮上看不到任何图像,并且它们的尺寸与我的图像不一样。他们的命令仍在起作用……
当我在网络上寻找解决方案时,我看到了许多有关Python垃圾收集器的问题,这些问题可以通过保留图像参考来解决。我想我的做法是正确的:
upArrowImage = tk.PhotoImage(file= 'up_arrow.gif')
upButton = tk.Button(command_frame, command= lambda : upButtonCommand())
upButton.image = upArrowImage
upButton.grid(row= 1, column= 1)
这是完整的代码:
import tkinter as tk
class myWindow(tk.Frame):
def __init__(self, master= None):
def upButtonCommand():
game_frame.config(bg= 'black')
def keyPad(self):
upArrowImage = tk.PhotoImage(file= 'up_arrow.gif')
upButton = tk.Button(command_frame, command= lambda : upButtonCommand())
upButton.image = upArrowImage
upButton.grid(row= 1, column= 1)
downArrowImage = tk.PhotoImage(file= 'down_arrow.gif')
downButton = tk.Button(command_frame)
downButton.image = downArrowImage
downButton.grid(row=3, column=1)
leftArrowImage = tk.PhotoImage(file= 'left_arrow.gif')
leftButton = tk.Button(command_frame)
leftButton.image = leftArrowImage
leftButton.grid(row=2, column=0)
rightArrowImage = tk.PhotoImage(file= 'right_arrow.gif')
rightButton = tk.Button(command_frame)
rightButton.image = rightArrowImage
rightButton.grid(row=2, column=2)
mainWindow = tk.Frame.__init__(self, master, height= 600, width= 800)
game_frame = tk.Frame(mainWindow, height= 400, width= 800, bg= 'green')
command_frame = tk.Frame(mainWindow, height= 200, width= 800, bg= 'blue')
game_frame.grid(row=0, column=0)
command_frame.grid(row=1, column=0)
keyPad(self)
window = myWindow() # Instanciate the Application class
window.master.title('Game Window') # Define the window title
window.mainloop()
这就是我得到的:
以防万一,这是我使用的图像类型:
我是Python的新手,但对OOP仍然有一些困难,请随时指出我的错误。
如果有人能帮助我让我的按钮正确显示其图像,那就太好了。
好吧,在拜访了很多并没有真正帮助过的类似问题并以各种方式重写了我的代码之后,我终于结束了运行该工作,从而完成了这项工作:
def keyPad(self): global upArrowImage upArrowImage = tk.PhotoImage(file='up_arrow.gif') upButton = tk.Button(command_frame, image= upArrowImage) upButton.grid(row= 1, column= 1)