gpt4 book ai didi

python - 为什么我无法在 tkinter 中对位图图像或照片图像进行网格化?

转载 作者:行者123 更新时间:2023-11-30 21:49:58 25 4
gpt4 key购买 nike

我有这段代码,它使用 tkinter 位图图像:

def ask(msg='Question?',title='Question'):
root=Tk()
thing=Thing()
root.title(title)
imgw=BitmapImage(root,file='Question.xbm')
root.iconbitmap('Question.ico')
imgw.grid(rowspan=2,padx=5,pady=5,sticky=NSEW)
msgw=Label(root,text=msg)
msgw.grid(column=1,padx=10,pady=5,sticky=NSEW,columnspan=2)
button1=Button(root,text='Yes',command=lambda:thing.change('Yes',root),underline=0)
button1.grid(column=1,row=1,padx=5,pady=5,sticky=NSEW)
button1.focus_set()
button2=Button(root,text='No',command=lambda:thing.change('No',root),underline=0)
button2.grid(column=2,row=1,padx=5,pady=5,sticky=NSEW)
root.bind('Key-y',lambda:thing.change('Yes',root))
root.bind('Key-n',lambda:thing.change('No',root))
root.mainloop()
ask()

...但我无法对位图图像进行网格化。我尝试过照片图像和位图图像,但它们都说:

Traceback (most recent call last):
File "E:\gui.py", line 18, in <module>
ask()
File "E:\gui.py", line 7, in ask
imgw.grid(rowspan=2,padx=5,pady=5,sticky=NSEW)
AttributeError: 'BitmapImage' object has no attribute 'grid'

我正在使用Python 3.4.2。有没有办法做到这一点,或者这只是 tkinter 中一件烦人的事情?

顺便说一句,这是 Thing 类:

class Thing:
def __init__(self,val=None):
self.val=val
def change(self,val=None,win=None):
self.val=val
if win:win.destroy()

最佳答案

一个BitmapImage不是一个小部件,如 LabelButton。它不能直接添加到root并使用grid布局。相反,您必须将其添加到例如另一个 Label(如果您愿意,也可以将其添加到您用于问题的相同 Label)。

root=Tk()

imgw = BitmapImage(file='Question.xbm') # no 'root' parameter
imgLabel = Label(root,image=imgw) # wrap the BitmapImage
imgLabel.grid(rowspan=2,padx=5,pady=5,sticky=NSEW) # layout the label

msgw=Label(root,text="Question")
msgw.grid(column=1,padx=10,pady=5,sticky=NSEW,columnspan=2)
button1=Button(root,text='Yes')
button1.grid(column=1,row=1,padx=5,pady=5,sticky=NSEW)
button2=Button(root,text='No')
button2.grid(column=2,row=1,padx=5,pady=5,sticky=NSEW)
root.mainloop()

另请注意,即使在标签中使用,此类图像也往往会被垃圾收集。为了防止这种情况,您应该将 BitmapImage 设为全局变量,或将其放入全局容器中,例如将文件名映射到已加载图像的 dict

关于python - 为什么我无法在 tkinter 中对位图图像或照片图像进行网格化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com