【发布时间】:2016-07-24 09:52:08
【问题描述】:
我正在为网格布局而苦苦挣扎 - 基本上我想在循环中打印一些数据,如下所示:
但我自己无法弄清楚。我设法让它正常工作,但只是第一个条目 - 我的代码:
from tkinter import *
from PIL import Image, ImageTk
import urllib.request
import io
app = Tk()
images = []
for i in range(0, 8):
text1 = Label(font=("Helvetica",10), text="top, left", cursor="hand2")
text2 = Label(font=("Helvetica",10), text="top, right")
text3 = Label(font=("Helvetica",10),text="lower")
image = "https://www.gravatar.com/avatar/b9630126afbff209bb068195307a5e4c?s=328&d=identicon&r=PG"
get_image = urllib.request.urlopen(image).read()
im1 = Image.open(io.BytesIO(get_image))
im_small = im1.resize((70, 70))
im = ImageTk.PhotoImage(im_small)
image1 = Label(app, image=im)
images.append(im)
image1.grid(rowspan=2, column=0, sticky=W)
text1.grid(row=0, column=1, sticky=W)
text2.grid(row=0, column=2, sticky=W)
text3.grid(row=1, column=1, sticky=W)
app.mainloop()
结果:
我也试过这个:
from tkinter import *
from PIL import Image, ImageTk
import urllib.request
import io
app = Tk()
images = []
for i in range(0, 8):
text1 = Label(font=("Helvetica",10), text="top, left", cursor="hand2")
text2 = Label(font=("Helvetica",10), text="top, right")
text3 = Label(font=("Helvetica",10),text="lower")
image = "https://www.gravatar.com/avatar/b9630126afbff209bb068195307a5e4c?s=328&d=identicon&r=PG"
get_image = urllib.request.urlopen(image).read()
im1 = Image.open(io.BytesIO(get_image))
im_small = im1.resize((70, 70))
im = ImageTk.PhotoImage(im_small)
image_cover = Label(app, image=im)
images.append(im)
image_cover.grid(rowspan=2, column=0, sticky=W)
text1.grid(row=i+1, column=1, sticky=W)
text2.grid(row=i+1,column=2)
text3.grid(row=i+2, column=1, sticky=W)
app.mainloop()
由于图片应该占据两行(我们称其为 1 和 2),因此“左上”应位于第 1 列的第 1 行,“右上”应位于第 2 列的第 2 行。
【问题讨论】:
-
好像你没有正确使用循环。实际上,循环之后您在哪里使用了
i?所以首先,让我们学习如何使用循环创建标签。 -
我知道我需要使用i,但我不确定如何正确使用,所以图像会占据两行+一列,但仍然可以填充两行,如附图所示。
标签: python-3.x tkinter