【发布时间】:2015-08-05 20:14:28
【问题描述】:
这是我在一个项目中使用的一些代码,它非常简单,目前还不能正常工作。我在使用框架小部件时遇到问题。现在,当我运行代码时,什么也没有发生,但是如果我删除有关框架和滚动条的行,并将列表框/画布小部件父级更改为“root”而不是“frame”,则代码可以工作。我在网上查看了很多示例,但我不明白为什么当我尝试将所有内容放在框架而不是根窗口中时没有出现 gui 窗口......?谢谢!
使用 python 2.7。
import pymongo
import glob, os
import Tkinter
from Tkinter import *
from PIL import Image, ImageTk
root = Tkinter.Tk()
root.title("keyBuilder")
frame = Frame(root, width = 630, height = 400)
groupMenu = Listbox(frame)
groupMenu.config(width = 30)
groupMenu.insert(END, "Group 1")
groupMenu.insert(END, "Group 2")
groupMenu.insert(END, "Group 3")
yscrollbar = Scrollbar(frame)
yscrollbar.grid(row=0, column=1, sticky=N+S)
gallery = Canvas(frame, width = 600, height = 400, yscrollcommand = yscrollbar.set)
path = r'/Users/Sam/Desktop/keynoteProject/slideIcons'
COLUMNS = 6
image_count = 0
for infile in glob.glob(os.path.join(path, '*.jpeg')):
image_count += 1
r, c = divmod(image_count-1, COLUMNS)
im = Image.open(infile)
resized = im.resize((100, 100), Image.ANTIALIAS)
tkimage = ImageTk.PhotoImage(resized)
myvar = Label(gallery, image=tkimage)
myvar.image = tkimage
myvar.grid(row=r, column=c)
groupMenu.pack(side = LEFT, fill = Y)
gallery.pack(side = RIGHT)
frame.pack()
root.mainloop()
如果有帮助,此代码有效:
import pymongo
import glob, os
import Tkinter
from Tkinter import *
from PIL import Image, ImageTk
root = Tkinter.Tk()
root.title("keyBuilder")
groupMenu = Listbox(root)
groupMenu.config(width = 30)
groupMenu.insert(END, "Group 1")
groupMenu.insert(END, "Group 2")
groupMenu.insert(END, "Group 3")
gallery = Canvas(root, width = 600, height = 400)
path = r'/Users/Sam/Desktop/keynoteProject/slideIcons'
COLUMNS = 6
image_count = 0
for infile in glob.glob(os.path.join(path, '*.jpeg')):
image_count += 1
r, c = divmod(image_count-1, COLUMNS)
im = Image.open(infile)
resized = im.resize((100, 100), Image.ANTIALIAS)
tkimage = ImageTk.PhotoImage(resized)
myvar = Label(gallery, image=tkimage)
myvar.image = tkimage
myvar.grid(row=r, column=c)
groupMenu.pack(side = LEFT, fill = Y)
gallery.pack(side = RIGHT)
root.mainloop()
【问题讨论】:
-
能贴出真实代码吗?您没有在此处指定
root。 -
我的错,复制/粘贴时漏掉了一行。固定!
-
问题似乎出在滚动条上。没有它,它工作正常。似乎混合
pack和grid布局在这里是个问题...
标签: python tkinter tkinter-canvas