Найти - Пользователи
Полная версия: tkInter повторение Frame с содержимым
Начало » GUI » tkInter повторение Frame с содержимым
1
sligel
Доброго времени суток.
У меня есть фрейм с картинкой
import tkinter
fenst=tkinter.Tk()
im=tkinter.PhotoImage(file="tab_row.gif")

fr1=tkinter.Frame(fenst,relief="groove",bd=2,width=100,height=30)
fr1.grid(row=0,column=0)
lab=tkinter.Label(fr1,image=im).pack()

fenst.mainloop()
я пытаюсь сделать так что бы в зависимости от желания пользователя,
можно было увеличить количество фреймов с картинками
from tkinter import *
fenst=Tk()
im=PhotoImage(file="tab_row.gif")
n=3
row_={}
for i in range(n):
row_[i]={}
row_[i]['frame']='Frame(fenst,relief="groove",bd=2,width=100,height=100).grid(row=i,column=0)'
row_[i]['labBild']="Label(eval(row_[i]['frame']),image=im).pack()"

eval(row_[i]['frame'])
eval(row_[i]['labBild'])

fenst.mainloop()
понять не могу как это можно осуществить.
bazooka
непонятно для чево eval
# coding: utf8
import Tkinter as tkinter



fenst=tkinter.Tk()
im=tkinter.PhotoImage(file="tab_row.gif")

n = 3
frames = []
for i in range(n):
fr = tkinter.Frame(fenst, relief="groove", bd=2, width=100, height=30)
fr.grid(row=0, column=i)
lab = tkinter.Label(fr, image=im).pack()
frames.append(fr)

fenst.mainloop()
вот както так
sligel
спасибо, немного изменил что бы был доступ к свойствам отдельных виджетов в Frame
import tkinter

fenst=tkinter.Tk()
im1=tkinter.PhotoImage(file="tab_row.gif")
im2=другая картинка
n = 3
frames = []
buton=[]
for i in range(n):
fr = tkinter.Frame(fenst, relief="groove", bd=2, width=100, height=30)
fr.grid(row=i, column=0)
lab = tkinter.Label(fr, image=im1)
lab.pack()
but=tkinter.Button(fr,text="blabla")
but.pack()
frames.append(fr)
buton.append(but)

buton[1].configure(text='bububu')
fenst.mainloop()
или можно было как то по другому, например без создания списка поменять картинку в lab во втором фрейме,
как на примере с buton
bazooka
lab = tkinter.Label(fr, image=im1)
создаете PhotoImage тоже в цикле и подставляете нужную картинку
igor.kaist
sligel, по моему, более правильный вариант:
buttons={}
.....
buttons[i]=tkinter.Button(fr,text="blabla")
buttons[i].pack()
....
labels[2]['image']=img2
Я все думаю, кошерен ли ваш подход, в списках остаются ведь лишь ссылки на объекты….
sligel
спасибо igor.kaist, я тоже так сделал, со словарем как то удобнее обращаться к виджетам по ключу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB