[viff-devel] GUI programming for Python/VIFF
Martin Geisler
mg at daimi.au.dk
Tue Feb 10 07:43:11 PST 2009
Håvard Vegge <havardv at stud.ntnu.no> writes:
Hi Håvard
> I'm developing a small application that will use VIFF. Instead of
> inputting values through the command line I would like to create a
> simple graphical interface.
That is an excellent idea!
> Have anyone experience with such GUI toolkits? Any recommendations?
>
> - I've barely tested PyQt, but it has some dual commercial/GPL
> license that I probably want to avoid.
> - Tkinter is the "standard" GUI toolkit for Python, but is reported
> to have a non-native look and feel.
> - wxPython is maybe the most popular GUI toolkit for Python, so
> perhaps I give it a try.
I would go for PyGTK, which has a Twisted integration available:
http://twistedmatrix.com/projects/core/documentation/howto/choosing-reactor.html#auto11
This is important in order to be able to run both the network and
graphical event loops.
I once played with it, please see
viff/apps/double-auction/client.py
for a simple program that uses PyGTK with Twisted. It doesn't do
anything VIFF related, though.
In order to actually do something VIFFy with it, I imagine you would
have a button with a callback like this:
def start_clicked():
r = create_runtime(...)
r.addCallback(go)
The go function could then let one of the players input a number:
def go(runtime):
if runtime.id == 1:
x = int(some_input_field.text)
else:
x = None
x = runtime.shamir_share([1], Zp, x)
y = x * x
z = runtime.open(y)
z.addCallback(update_output)
Here I guess a text input field in GTK has a text attribute...
Finally, update_output would do:
def update_output(output):
some_label.text = "Shared number: %d" % output.value
I talked about this with Tomas Toft just the other day, so maybe he
can contribute more to the pseudo-code :-)
There were a slightly tricky issue with the synchronization of program
counters that we had to think about, but now I don't remember the
details. But I know that Tomas has a photo of our blackboard... :-)
--
Martin Geisler
VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
SMPC (Secure Multiparty Computation) to Python. See: http://viff.dk/.
More information about the viff-devel
mailing list