467,910 Members | 1,578 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,910 developers. It's quick & easy.

Entry Widget problem

Hi,

I am new in Python and I have no experience in object-oriented programming.
I want to make an easy GUI for my application. What is my problem? I have
the data-file like this (file ETab_H1.dan):
16
1 13 10 1 0.9 1.1 1 0 0.0 0.0 0.0
2 14 50 2 0.9 1.1 4 2 0.0 0.0 0.0
3 15 10 2 0.9 1.1 1 0 0.0 0.0 0.0
4 16 10 1 0.9 1.1 1 0 0.0 0.0 0.0
5 17 50 2 0.9 1.1 4 2 0.0 0.0 0.0
6 18 10 2 0.9 1.1 1 0 0.0 0.0 0.0
7 19 10 1 0.4 0.9 1 0 0.0 0.0 0.0
8 20 5 2 0.4 0.8 1 0 0.0 0.0 0.0
9 21 40 2 0.2 1.1 0 0 0.0 0.0 0.0
10 22 40 2 0.4 1.5 0 0 0.0 0.0 0.0
11 23 5 2 3.7 1.1 1 0 0.0 0.0 0.0
12 24 10 2 0.9 1.1 1 0 0.0 0.0 0.0
13 25 10 2 0.9 1.1 1 0 0.0 0.0 0.0
14 26 10 2 0.9 1.1 1 0 0.0 0.0 0.0
15 31 10 2 0.9 1.1 1 0 0.0 0.0 0.0
16 32 10 2 0.9 1.1 1 0 0.0 0.0 0.0

The first number is a number of rows in data-block below. These numbers are
the coefficients for my functions in FORTRAN program. Before I run my
program
I must read this file, change some of these coefficients and write this file
again in the same form. In the file ETab.py
I wrote:

file ETab.py:
-----------------------------------------------------------------

from Tkinter import *
import tkFont
import string

class ETab(Frame):
def __init__(self):
Frame.__init__(self,height="40",width="600",relief =RAISED)
self.master.title('Data for grid generation')
self.grid()
ELista=["nr","Egde","nCell","nFun","P","Q","Metoda","WBTyp ","Left","Right","sigma"]
for icol in range(len(ELista)):
self.Etykieta(icol,irow=0,EText=ELista[icol])

f=open('ETab_H1.dan', 'r');
self.c=f.readline()
c1=int(self.c)

self.FieldList=[]
self.FieldList.append(c1)

k=1
for i in range(c1):
c=f.readline()
s=c.split()
dl=len(s)
for j in range(dl):
self.Pola(k,j,i,DefaultValue=s[j])
k=k+1

f.close()

self.applyBotton = Button(self,text="Apply",command=self.addEntry)
self.applyBotton.grid(column=dl-2,row=c1+1)
self.quitButton = Button(self, text="Quit",command=self.quit)
self.quitButton.grid(column=dl-1,row=c1+1)
def addEntry(self):
nElem=len(self.FieldList)
print nElem
ff=open('ETab_H1.spr', 'w');
ff.write(self.c)
LL=StringVar()
for k in range(nElem):
LL=self.FieldList[k]
print k,LL

ff.close()
def Etykieta(self,icol,irow,EText):
lab=Label(self,text=EText)
lab.grid(column=icol,row=irow)
return

def Pola(self,k,icol,irow,DefaultValue):
self.Tab=StringVar()
WLista=[5,5,5,5,10,10,10,10,10,10,10]

self.pole=Entry(self,highlightcolor="BLUE",textvar iable=self.Tab,justify=RIGHT,width=WLista[icol])
self.pole.grid(column=icol,row=irow+1)
self.pole.insert(0,DefaultValue)
self.FieldList.append(self.Tab)
return self.Tab

ETab().mainloop()

-----------------------------------------------------------------

This script connects all numbers in my data-file with Entry Widget, but
the results are:

177
0 16
1 PY_VAR0
2 PY_VAR1
3 PY_VAR2
....
174 PY_VAR173
175 PY_VAR174
176 PY_VAR175
And when I change LL into LL.get():

177
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 1345, in __call__
return self.func(*args)
File "ETab.py", line 107, in addEntry
print k,LL.get()
AttributeError: 'int' object has no attribute 'get'

What is wrong? And, how can I take the value of self.Tab?

Sorry for my English.

M.S.


Jun 30 '06 #1
  • viewed: 932
Share:

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Mickel Grönroos | last post: by
3 posts views Thread by Phil Schmidt | last post: by
3 posts views Thread by bigbinc | last post: by
3 posts views Thread by asit | last post: by
reply views Thread by Leonhard Vogt | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.