Discussion:
[Tutor] How to print ALL contents of a scrolled Tkinter window?
boB Stepp
2015-04-17 13:26:38 UTC
Permalink
Solaris 10, Python 2.4.4

Thanks to earlier help from this list, I can now print a particular
Tkinter-generated window. But this will only print what is currently
viewable on the screen. In the case of scrolled information that is
currently outside the viewing area, it would be missed by such a print
(Using OS import command, as Peter demonstrated.). This type of print
functionality appears in everyday software products, but it is not
clear to me (Yet!) how to approach this problem. My initial thoughts
are along the lines of: 1) Determine how many rows of information
appear in the viewing area. 2) Determine how many total rows of
information exist to be printed. 3) Figure out how to programmatically
do a *manual* scroll to bring up the hidden scrolled information. 4)
Repeatedly apply the printing method. While I can probably make this
approach work (It *seems* conceptually simple.), I cannot help but
feel there is a much better way...

I intend to scour my available Tkinter documentation to see if there
are root window level and scrolled area commands that might suggest
another approach. And what I am doing now, seeking your collective
wisdom...

Thanks!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-17 15:05:10 UTC
Permalink
Post by boB Stepp
While I can probably make this
approach work (It *seems* conceptually simple.), I cannot help but
feel there is a much better way...
Tkinter is very old software. This sort of scrolling you want was
in no way common when Tkinter was new. For things like this, I
just use kivy, which has the advantage that is runs under IOS and
Android out of the box.
The whole point of kivy is to create better, new paradigm user interfaces,
where scrolling surfaces are built-in.
It may be faster for you to reimplement what you have in kivy than to
try to get Tkinter to do what you want.
Alas! I am not allowed to install any new software on these systems
(Which use Python 2.4.4 or 2.6.4.). So I am stuck with whatever tools
are installed by default, and that does not include your suggestion.
However, I will look into kivy for my at-home studies/projects!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-04-17 19:28:21 UTC
Permalink
Post by boB Stepp
Solaris 10, Python 2.4.4
Thanks to earlier help from this list, I can now print a particular
Tkinter-generated window. But this will only print what is currently
viewable on the screen.
Because it is effectively taking a screen shot.
Post by boB Stepp
In the case of scrolled information that is
currently outside the viewing area, it would be missed by such a print
That's why GUI printing generally uses an entirely different
technique to print things (see my earlier email). In essence
this requires you to separate the data content and format
from the GUI presentation. The printed presentation must be
prepared by you the programmer and output to the new display
context(a printer). This means you need to decide how to
handle page breaks, page width and orientation etc etc.

Its a whole different ballgame and much more complex than
simply issuing a print command. Hard copy output from a
GUI is one of the hardest things to do in almost any GUI,
especially if you want it truly WYSIWYG.

My personal favourite approach is to abandon WYSIWYG and
go for WYSRWYG - What you see resembles what you'll get...
And then I reformat the data using HTML, send it to a file
and print that file using whatever HTML rendering engine
I can find.

wxPython makes printing easier but even there its a
whole chapter(ch17) of the book and its at the end so
assumes you already know all the background around sizers,
device context and the like.... The example program - for
printing a formatted text document - runs to 2.5 pages of
code. And that's the easiest printing framework I've seen.
Post by boB Stepp
are along the lines of: 1) Determine how many rows of information
appear in the viewing area. 2) Determine how many total rows of
information exist to be printed. 3) Figure out how to programmatically
do a *manual* scroll to bring up the hidden scrolled information. 4)
Repeatedly apply the printing method. While I can probably make this
approach work (It *seems* conceptually simple.), I cannot help but
feel there is a much better way...
Its never going to be pretty but multiple screen captures
can work. Its certainly easy enough to reposition a scroll
bar programmatically from within a while loop. Figuring out
how many lines will depend on all sorts of things like
the size of fonts being used, how widgets are laid out.
That's what gets tricky, especially if users don't have
standardised screen sizes etc.
Post by boB Stepp
I intend to scour my available Tkinter documentation to see if there
are root window level and scrolled area commands that might suggest
another approach.
Not really. Tkinter (and Tk) basically sidesteps printing
to hard copy. There simply is no built in support. You have
to format it yourself.

Check out IDLE - even it doesn't have any built in
formatted print. It only has 'Print Window', which is
just plain text.
Although even looking at how they did that might
help too. Remember you have the code to IDLE and
its built using Tkinter...
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-18 20:17:42 UTC
Permalink
Post by Alan Gauld
Post by boB Stepp
Solaris 10, Python 2.4.4
[...]
Post by Alan Gauld
That's why GUI printing generally uses an entirely different
technique to print things (see my earlier email). In essence
this requires you to separate the data content and format
from the GUI presentation. The printed presentation must be
prepared by you the programmer and output to the new display
context(a printer). This means you need to decide how to
handle page breaks, page width and orientation etc etc.
I had started thinking along these lines, but realized that I possess
a severe lack of knowledge as to the details of the printer does its
*magic*. I used to know a bit about how dot-matrix printers
(non-color) worked, but that has been a very long time ago...

You mentioned groff in the other thread. Is this relatively easy to
adapt to its formatting commands? Is it likely to be on my bare-bones
Solaris 10 workstation? I will have to check to see what is present
Monday.
Post by Alan Gauld
Its a whole different ballgame and much more complex than
simply issuing a print command. Hard copy output from a
GUI is one of the hardest things to do in almost any GUI,
especially if you want it truly WYSIWYG.
I am surprised that Python does not have a standard library module to
help with this. I see that there are third-party modules, but that
does not help me within my work environment constraints.
Post by Alan Gauld
My personal favourite approach is to abandon WYSIWYG and
go for WYSRWYG - What you see resembles what you'll get...
And then I reformat the data using HTML, send it to a file
and print that file using whatever HTML rendering engine
I can find.
Are there such HTML rendering engines likely to be present in a
Solaris 10 environment, which is a rather bare-bones environment? I
mean outside of a web browser. I can already use my existing template
to auto-generate the appropriate HTML formatting (Once I write the
needed functions to do so. But it should logically no different than
how I interpret my template to render the Tkinter GUI display.), save
that in a file and then? This would be needed to be done
programmatically, not manually by the user. The desired end result is
a pdf document to be stored electronically for posterity.
Post by Alan Gauld
wxPython makes printing easier but even there its a
whole chapter(ch17) of the book and its at the end so
assumes you already know all the background around sizers,
device context and the like.... The example program - for
printing a formatted text document - runs to 2.5 pages of
code. And that's the easiest printing framework I've seen.
Which book are you referencing here? Would it be "Wxpython in Action"?
Post by Alan Gauld
Post by boB Stepp
are along the lines of: 1) Determine how many rows of information
appear in the viewing area. 2) Determine how many total rows of
information exist to be printed. 3) Figure out how to programmatically
do a *manual* scroll to bring up the hidden scrolled information. 4)
Repeatedly apply the printing method. While I can probably make this
approach work (It *seems* conceptually simple.), I cannot help but
feel there is a much better way...
Its never going to be pretty but multiple screen captures
can work. Its certainly easy enough to reposition a scroll
bar programmatically from within a while loop. Figuring out
how many lines will depend on all sorts of things like
the size of fonts being used, how widgets are laid out.
That's what gets tricky, especially if users don't have
standardised screen sizes etc.
I may or may not go this way. I already wrote a set of scripts (in
shell and Perl) a few years ago to allow the user to click and drag an
area of their screen to capture into a pdf document. It leverages the
existing printer configurations and tools in the planning software.
When the user is finishing making captures, he clicks the "Print to
pdf" button and it converts the captures into a single pdf document,
which it then ftps to the desired destination folder on a different
portion of our intranet. This would provide a workable solution until
I learn more.
Post by Alan Gauld
Post by boB Stepp
I intend to scour my available Tkinter documentation to see if there
are root window level and scrolled area commands that might suggest
another approach.
Not really. Tkinter (and Tk) basically sidesteps printing
to hard copy. There simply is no built in support. You have
to format it yourself.
I did not find even a hint of anything beyond the already known Canvas
widget postscript capability.
Post by Alan Gauld
Check out IDLE - even it doesn't have any built in
formatted print. It only has 'Print Window', which is
just plain text.
Although even looking at how they did that might
help too. Remember you have the code to IDLE and
its built using Tkinter...
I will make time to do this. Hopefully it will provide better modes of
thinking on my part!

Thanks, Alan!

boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-04-17 20:06:35 UTC
Permalink
just use kivy, which has the advantage that is runs under IOS and
Android out of the box.
But does Kivy support hard copy printing?
That's pretty unusual behaviour on
tablets/phones.

If so can you show us a short example of
how it works. (Technically off-topic for
the tutor list but I'm curious to see
how it compares to say, Tkinter)
The whole point of kivy is to create better, new paradigm user interfaces,
where scrolling surfaces are built-in.
That wouldn't be on mobile devices then,
where the UIs are universally horrible IMHO! :-)
They are the very antithesis of good user
interface design.
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-04-18 00:04:11 UTC
Permalink
Post by Alan Gauld
just use kivy, which has the advantage that is runs under IOS and
Android out of the box.
But does Kivy support hard copy printing?
That's pretty unusual behaviour on
tablets/phones.
Every kivy app lives in precisely one window. This window has a screenshot
method. You can bind it to a button, and you will get a png of exactly
what your app looks like.

Also, every widget has an export_to_png method which you can use to
capture the widget and its children.

So inside your program you can say -- start at the top of this widget,
display the first page, take screenshot, then scroll it one page, take
screenshot, repeat until done. Which is a whole lot easier than fidding
with your app and taking screenshots from the outside.

Once you have the filename(s) you can print it/them however you normally print
files. My printer lives on a wireless conection and my laptop, my desktop
and my tablet know how to talk to it. (My phone does not, but it's over
5 years old now, and the android it runs is very old. I'd upgrade it
in a second if some manufacturer would go back to making a 3.5 inch screen.
A phone that I cannot dial phone numbers on, one handed, is of no use to
me. Grumble grumble.)
Post by Alan Gauld
The whole point of kivy is to create better, new paradigm user interfaces,
where scrolling surfaces are built-in.
That wouldn't be on mobile devices then,
where the UIs are universally horrible IMHO! :-)
They are the very antithesis of good user
interface design.
You might enjoy playing with kivy, then, where the philosophy is 'we
can do much better than what we have now'. Thinking about touch devices
and how to best use them (rather than how to emulate a mouse) is fun.
Post by Alan Gauld
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Laura Creighton


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-18 17:03:08 UTC
Permalink
Post by Laura Creighton
Post by Alan Gauld
just use kivy, which has the advantage that is runs under IOS and
Android out of the box.
But does Kivy support hard copy printing?
That's pretty unusual behaviour on
tablets/phones.
Every kivy app lives in precisely one window. This window has a screenshot
method. You can bind it to a button, and you will get a png of exactly
what your app looks like.
Also, every widget has an export_to_png method which you can use to
capture the widget and its children.
Have these types of methods ever been considered for tkinter? They
would go a long way to giving people a way to print, while not getting
into a lot of OS hassle. In my particular scenario I would desire the
ability to output both postscript and pdf, though if I have the first
it is easy to get the latter.

boB Stepp
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-04-18 20:13:10 UTC
Permalink
Post by boB Stepp
Have these types of methods ever been considered for tkinter?
I don't follow the TK and Tkinter mailing lists closely.
You are probably better asking there.

There is a gmane news feed for a Tkinter mailing list
as well as an archive

gmane.comp.python.tkinter

And the general Tk fora at:

www.tcl.tk

They may even have a solution, in which case let us know.
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-25 01:24:38 UTC
Permalink
You need the testing-in-python mailing list. Come on over ...
http://lists.idyll.org/listinfo/testing-in-python
You will find lots of familiar faces (email addresses) from this
list there. Nose and py.test are very similar. I happen to like
them better than unittest, but if you cannot install software on
your solaris machines, you may be better off with unittest which
comes with Python, which I assume you do have on your Solaris boxes.
I have joined!

The Python versions at work are 2.4.4 and 2.6.4(?)(Not certain about
the last digit there.) Based on responses to date, the fact that
unittest is in the standard library and that because of this most of
my books have something about unittest, I will probably start there. I
imagine that everything I learn with unittest will transfer over to
other testing frameworks.
And as to automated testing: I really, ..., really would like to
implement it on my side projects at work. But all such programs start
in a proprietary scripting environment, which can call external Python
(or other languages) scripts. The resulting final program is almost
always an unavoidable amount of propriety scripting language (Which I
always strive to minimize the amount of.), Solaris shell
commands/scripts and Python. As I have been learning more Python and
implementing it at work, I have found that the most successful
approach seems to be to first get all of the information I need out of
the CSA (commercial software environment) upfront, save it in temp
files, then call a Python script to start the heavy duty processing,
do everything possible in Python, generate a "reload" script file that
contains language the CSA understands, and finally run that inside the
CSA. How do I go about automating the testing of something like this?
And apply TDD write tests first principles?
You need the testing-in-python mailing list. Whatever proprietary
thing you have to integrate with, chances are somebody there has
been there, and done that already and has code you would be
welcome to use.
When I get farther along, I will probably have some very specific
questions on this that I will post there. Steven and Alan have given
me some very good feedback already! But if someone has already solved
my problem, or, something very similar, then that will be great!
And I would like to have all of that under version control, too. But
while I am allowed to write my own programs for this CSA, I am not
allowed to install anything else, strange as this may sound! Since the
only functional editors in these bare-bones Solaris 10 environments
are some simplistic default editor that I do not know the name of and
vi, I long ago gravitated to doing my actual coding on my Windows PC
(Being careful to save things with Unix line endings.) and FTPing to
the environments where these programs will actually run. I AM allowed
to install anything I want (within reason)on my PC. So I am thinking
install and use Git there?
Are you absolutely certain that you cannot install git on your bare-bones
Solaris 10 environments? Or plug in a memory stick and run code from
there? Because it would make your life so much easier ...
I think that I can get an exception here (See a post in response that
I made earlier today.). What I am *certain* of, is that I cannot
install anything on our clinical planning environment. The Solaris
workstation that I now have all to myself--I'm thinking they will now
let me do what I want with it. But I must double check... But anything
I develop there *should* work in the clinical environment. The
planning software is the same though that may change soon as there are
plans to go up a version and they may not want to do that on my
testing/development machine.

Thanks!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-04-25 08:20:51 UTC
Permalink
Post by boB Stepp
I have joined!
Great! Great!
Post by boB Stepp
The Python versions at work are 2.4.4 and 2.6.4(?)(Not certain about
the last digit there.) Based on responses to date, the fact that
unittest is in the standard library and that because of this most of
my books have something about unittest, I will probably start there. I
imagine that everything I learn with unittest will transfer over to
other testing frameworks.
What is even better, should you wake up one morning and decide that
you really want pytest, I written have a script that automatically converts
unittests to pytest tests. It is included with the pytest distribution.
Post by boB Stepp
Are you absolutely certain that you cannot install git on your bare-bones
Solaris 10 environments? Or plug in a memory stick and run code from
there? Because it would make your life so much easier ...
I think that I can get an exception here (See a post in response that
I made earlier today.). What I am *certain* of, is that I cannot
install anything on our clinical planning environment. The Solaris
workstation that I now have all to myself--I'm thinking they will now
let me do what I want with it. But I must double check... But anything
I develop there *should* work in the clinical environment. The
planning software is the same though that may change soon as there are
plans to go up a version and they may not want to do that on my
testing/development machine.
This thought 'if it works here, it ought to work there' is an unworthy
thought for somebody who has learned to test their code. ;) You go to your
new machine. You pull down your tests and your code. You run all your
tests. When they pass, you don't just _think_ that the code _ought to_
run here -- you _know_ the code will run because it passes all its tests.

This sort of peace of mind is better than money in the bank.

And, when they don't you are saved infinite amounts of embarassment.
The code blows up _now_, when you are looking for problems, rather
than in the middle of showing off your code to some important, influential
person, because of tiny incompatibilities between what you have at home
and what you have in the field. You can overcome, but never un-make a
bad first impression ...

So we have got to find you a way that works to get your tests and a way
to run them on your production machines.

Is there a way to stick a memory stick into these machines? Can you
mount a filesystem there and cd to it? Over at the university here, I
teach classes for the general public -- my buddies at the university
let me use their machines for free. I am teaching children who don't
own a computer how to make games that run on their android cell phones --
or rather, we are all teaching each other, because I am very new to this
as well. So they need a machine where they can do their development,
because developing on your cell phone is painful beyond belief.

Every Monday morning, and more often if they feel like it,
the university admins reset every computer to it's pristine 'just out
of the box' state. (well, the password file will stay, but you get
the idea.) Any files you leave on the machine will be removed. This
is to cut down on the rate of virus infection at the university, for
the most part. So we keep all the code we care about on our memory
sticks, indeed in a virtualenv on our memory sticks. Solaris has
virtualenv -- I checked -- see
http://www.opencsw.org/packages/CSWpy-virtualenv/

So, right now, aside from a mandate from on high that people who
plug memory sticks into their computers shall be boiled in oil, or
the situation where your machines don't have any external ports at all,
I cannot see why this solution wouldn't work for you.

See any problems with this idea I missed?

Laura

_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-25 03:15:20 UTC
Permalink
I saw something on Python-List that I think is worth getting on this
list as Mark gave a very good reference...
Based on my experience reading newbie posts on python list and
Stackoverflow, learning to write real functions, without input and
print, and repeatable tests, is the most important thing many people are
not learning from programming books and classes.
Got to start them off somewhere so http://nedbatchelder.com/text/test0.html
It is a talk that Ned Batchelder gave at PyCon 2014 called, "Getting
Started Testing". You can watch the actual video (Which I just did.),
go through the slides or read the slides with the video comments
transcribed in. After watching the video, I feel I have a much greater
understanding of testing and Python's tools to support it than I did a
few minutes ago. I highly recommend watching this video -- Mr.
Batchelder is a very good speaker and presents his material very
effectively. Many thanks, Mark, for this link!

boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-04-29 21:16:01 UTC
Permalink
I forget. You are writing these things as functions rather than
methods of a class, because you don't know how to use classes yet?
You forget nothing! ~(:>))
Because you are absolutely correct that there are ways to simplify this,
but if you don't know how to use classes yet, put this on hold until
you do. And this particular thing you want to do is not the optimal
place to start learning about how to use classes.
Since the unittest module creating test classes, I have commenced
formal studying of this topic. But as you point out, not ready for it
yet!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-18 03:49:16 UTC
Permalink
The place to ask this question is https://mail.python.org/mailman/listinfo/tkinter-discuss but I think you are out of luck...
This would explain why I am having trouble finding much information.
I *think* I could get things to work on the tablet if I restrict
myself to coding for short press and long press gestures, and the
virtual keyboard. But even this might be more involved than I would
like. I read something a bit ago that one fellow could not get a
short or long press gesture to work unless he coded for BOTH the press
and release the press events. Not exactly analogous to a mouse-click
event.
... On the other hand, kivy
ought to work for you. http://kivy.org/#home I've yet to try it on
a windows tablet, though.
I think it was you who mentioned this GUI framework on the main python
list fairly recently. In fact, on my phone I have left its web page
up to look at when I get a chance. Does kivy have all of the
functionality of tkinter in addition to supporting multi-touch
gestures? Any downsides I should be aware of? Judging by their
"Hello, world" example, the code looks even simpler than tkinter.
Does everything have to be written as classes?

Thanks, Laura!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-07-18 04:22:19 UTC
Permalink
Post by boB Stepp
... On the other hand, kivy
ought to work for you. http://kivy.org/#home I've yet to try it on
a windows tablet, though.
I think it was you who mentioned this GUI framework on the main python
list fairly recently. In fact, on my phone I have left its web page
up to look at when I get a chance. Does kivy have all of the
functionality of tkinter in addition to supporting multi-touch
gestures? Any downsides I should be aware of? Judging by their
"Hello, world" example, the code looks even simpler than tkinter.
Does everything have to be written as classes?
Thanks, Laura!
--
boB
You are most welcome.

Everything has to be written as classes. So far, I haven't found
anything I could do with tkinter that I cannot do with kivy, but
I haven't coded anything really complicated with it yet, either.

Laura

_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-18 04:57:01 UTC
Permalink
I have a plug in usb keyboard that I can just plug into my tablet.
It works great for data entry...
I suggested this to my wife and believe she is looking into it.
However, whenever she is walking about her classroom, she does not
want to be messing with her keyboard, just quickly tapping and
selecting predetermined skill assessment options (Student just
beginning to learn; practicing now; has achieved mastery of this
skill; etc.).
1) Find a way to always keep the laptop and tablet synchronized.
All the cloud storage services want to sell you something that
does this. So does Dropbox.
My wife has a Dropbox account and mentioned this as a possibility.
Is this a sensible way of approaching at least this one project? Of
course, I have not a clue as to how to do any of this (yet!).
[snip]
The idea is to use as much off the shelf technology to do what you
want, and not reinvent the wheel. Especially when it comes to
security issues that, worse case scenario, have all the parents
suing you for not keeping things that are required to be private
from being hacked.
Before there was cloud computing, and smartphones, we wrote a client
server app that handled the billing situation for the local energy
company -- plus all their power outages, service apps etc, etc, etc.
It took 4 of us nearly a year to get the permissions down right for
all possible cases.
Doing the same sort of thing for our mobile app using existing
cloud libraries took about 3 weeks. Only some of that speedup was
due to the fact that we knew what we were doing a lot better the
second time around, and we had really extensive unit tests from
the old way of doingf that we could slightly refactor and then
make sure they passed under trhe new regime.
You haven't picked yourself an easy one here ...
Tell me about it! Vonda (my honored spouse) has been hinting about
all of this for quite some time. But she had not figured out her
exact needs. She actually still hasn't, but has a broad idea of what
she initially would like to have now. And she has a greatly
exaggerated idea of what I can accomplish in five weeks!

I suspect version 0.0.1 will be something along the lines of:
Everything basically exists on the tablet. Get a keyboard that works
with the tablet. Manually backup/sync tablet with laptop as needed.
Does the program have the basic functionality you *really* want as you
wander about the room? Probably not. Tell me what you now need.
Etc. Only when I feel I have what she really wants nailed down will I
get into the rest of our discussion. But I *do* want to design my
code with where the final version needs to go, so hopefully I won't
have any major rewrites in my future!
One warning -- the trick to high speed performance for such things is
to copy as little data as is needed from one device to another (and
then let the devices regenerate a lot of what they need from the
basic necessary set). But the trick for _developing_ and
debugging such things is to send more information, including a
bunch of handshaking things like 'I am trying to open the MongoDB
Database now. Ok, that worked, now I am adding new job tickets ...
and so on and so forth.
If you do not do things like that, the time will come when you sit
pointing at your server saying 'You aren't doing anything. Why aren't
you doing <whatever it is you want it to do>?" Utterly frustrating.
YOu need to build a verbose way into what you do so you can have your
server tell you what it thinks it ought to be doing, and then a
way to shut the server up when you go into production.
This makes a lot of sense! Must remember...
But I would go google for cloud services that have data synchronisation.
(Which is pretty much all of them, that being the point, after all).
You want to build your app out of some of these ready made parts, or
risk that your wife's students will all be in university before you are
done with your app.
For sure! Especially when I get into some student drills programs
that she will undoubtedly want the students to work on both in class
and at home with an option for the parents to view their child's
progress online.

But for this student assessment project, it is going to have to be
without all the desired bells and whistles to have something that will
be practically useful for her when school starts. Especially when I
am certain Vonda is still figuring out what she *really* needs!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-07-18 05:18:00 UTC
Permalink
Post by boB Stepp
But for this student assessment project, it is going to have to be
without all the desired bells and whistles to have something that will
be practically useful for her when school starts. Especially when I
am certain Vonda is still figuring out what she *really* needs!
Every user is like this. You hand them a thing that does 100%
exactly what they said they wanted, they play with it for 10 minutes,
(or sometimes 10 seconds) and say 'aha! Now what I would really like is ...'

This means that you need to have frequent chats with the people who
will use the app as you are developing it. And here, you got lucky
in that you live with the person you need to talk to. So you won't
run into -- we are too busy to talk to you right now, we cancelled the
last meeting we had to discuss things, and no, we don't know when
we can reschedule -- which can be a problem when doing commercial
development.

One warning -- how a person uses an app when they are new to it, and
learning how to use it is different than how they use it when they
are very familiar with it. So, for instance, it is common to hear
'I will never remember the 4 commands. Can I have a pull down
menu?' And you give them that. Then, a week later they tell you
'This pull down menu is too slow. Can we have a keyboard shortcut
instead?' At this point the 4 commands won't be hard to remember,
and may be exactly the keyboard shortcut they are now looking for.

It is a thing to remember when you are discussing what users want
with the users.

Laura


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Loading...