【发布时间】:2014-03-30 18:49:09
【问题描述】:
我正在制作一个程序,为您提供有关行星/恒星的信息和图片。我正在使用 tkinter 这样做。
这是出现问题的代码:
sunPic = r'sun.gif'
mercPic = r'merc.gif'
buttonFrame = Frame(root)
buttonFrame.pack(side=LEFT)
textFrame = Frame(root)
textFrame.pack(side=TOP)
def sunInfo():
sunImage = PhotoImage(file=sunPic)
img1 = Label(textFrame, image = sunImage)
img1.image = sunImage
img1.pack()
def mercInfo():
mercImage = PhotoImage(file=mercPic)
img1.configure(image = mercImage)
img1.image = mercImage
img1.pack()
sun = Button(buttonFrame, text="THE SUN",command=sunInfo)
sun.pack(side=TOP)
mercury = Button(buttonFrame, text="MERCURY",command=mercInfo)
mercury.pack(side=TOP)
当您按下按钮时,它应该会更改图像。所以说如果我按 THE SUN 按钮,就会出现一张太阳图片,然后我按 MERCURY 按钮,一张水银图片将取代太阳图片。
但是,这不起作用。当我单击水银按钮时,会出现此错误:
img1.configure(image = mercImage)
NameError: global name 'img1' is not defined
另外,如果我按几次“太阳”按钮,就会出现几张太阳的图像!我不想要这个。
我想在这个程序中做什么:
创建带有行星名称的按钮。
允许用户按下这些按钮
出现了该星球上的图片和一些信息
如果用户按下另一个按钮,图片和信息将被新的行星信息和图片替换。
这是我今晚必须完成的项目。我几乎没有 tkinter 经验,我需要帮助。
谢谢。
还有:
这是我正在处理的完整代码:
from tkinter import *
root = Tk()
root.geometry('1024x768+200+200') # makes window (x,y+top left corner right + top left corner down)
root.title("Planetary Information") # creates title for window
sunPic = r'sun.gif'
mercPic = r'merc.gif'
buttonFrame = Frame(root)
buttonFrame.pack(side=LEFT)
textFrame = Frame(root)
textFrame.pack(side=TOP)
def sunInfo():
sunImage = PhotoImage(file=sunPic)
img1 = Label(textFrame)
img1.configure(image = sunImage)
img1.image = sunImage
img1.pack()
def mercInfo():
mercImage = PhotoImage(file=mercPic)
img1.configure(image = mercImage)
img1.image = mercImage
img1.pack()
sun = Button(buttonFrame, text="THE SUN",command=sunInfo)
sun.pack(side=TOP)
mercury = Button(buttonFrame, text="MERCURY",command=mercInfo)
mercury.pack(side=TOP)
venus = Button(buttonFrame, text="VENUS")
venus.pack(side=TOP)
earth = Button(buttonFrame, text="EARTH")
earth.pack(side=TOP)
mars = Button(buttonFrame, text="MARS")
mars.pack(side=TOP)
jupiter = Button(buttonFrame, text="JUPITER")
jupiter.pack(side=TOP)
saturn = Button(buttonFrame, text="SATURN")
saturn.pack(side=TOP)
uranus = Button(buttonFrame, text="URANUS")
uranus.pack(side=TOP)
neptune = Button(buttonFrame, text="NEPTUNE")
neptune.pack(side=TOP)
root.mainloop() #
【问题讨论】:
标签: python tkinter python-3.3