<p>下面是一个csh脚本,用于为GUI创建动态python代码。在</p>
<p>它的作用是什么?</strong></p>
<p>进入</p>
<blockquote>
<p>./dynamic_python -label name,age -frame myframe</p>
</blockquote>
<p>它将创建2个名为name,age的标签,为每个标签和其他一些小部件创建2个输入框。
我知道这并不是你所需要的,但是考虑一下你的解决方案。
如果你需要更多的帮助,请告诉我。
感谢其他用户的反馈:)</p>
<p>dynamic_python的代码:</p>
<pre><code>#! /bin/csh -f
#echo $argv[1]
#shift
#echo $argv[1]
while ("$#" != 0)
if("$argv[1]" == "-label") then
set label = "$argv[2]"
shift
shift
endif
if("$argv[1]" == "-frame") then
set frame = "$argv[2]"
shift
shift
endif
end
set label = `echo $label | sed 's/,/ /g'`
set lcount = `expr "$#label" + 1`
set lc = 1
#
echo "#! /usr/bin/python" > dy.py
echo "from Tkinter import *" >> dy.py
#
echo "def fun_ok():" >> dy.py
echo " print 'OK_Accepted'" >> dy.py
set label = `echo $label | sed 's/,/ /g'`
set lcount = `expr "$#label" + 1`
set lc = 1
echo " list_out = []" >> dy.py
while ($lc != $lcount)
echo " print $label[$lc].get()" >> dy.py
echo " list_out.append('-$label[$lc]')" >> dy.py
echo " list_out.append($label[$lc].get())" >> dy.py
set lc = `expr "$lc" + 1`
end
echo " print list_out" >> dy.py
#
echo "$frame = Tk()" >> dy.py
#
set label = `echo $label | sed 's/,/ /g'`
set lcount = `expr "$#label" + 1`
set lc = 1
while ($lc != $lcount)
echo $lc $label[$lc]
echo "$label[$lc] = StringVar()" >> dy.py
echo "Label($frame,text="_$label[$lc]_").grid(row = $lc,column = 1)" | sed 's/_/"/g' >> dy.py
echo "Entry($frame,textvariable=$label[$lc]).grid(row=$lc,column=2)" >> dy.py
set lc = `expr "$lc" + 1`
end
echo "Button($frame,text='OK',command=fun_ok).grid(row = $lc,column = 1)" >> dy.py
echo "Button($frame,text='EXIT',command=$frame.quit).grid(row = $lc,column = 2)" >> dy.py
#Button(master, text="OK", command=callback)
#
echo "$frame.mainloop()" >> dy.py
#
chmod 755 *
dy.py
</code></pre>