行数と列数のユーザー入力を取得する必要があり、列をどのように正当化するかを尋ねるとします。この例では、正当化する必要があるとします。これについてどうすればいいですか?
numofrows = rawinput('# rows:')
numofcolumns = rawinput('# columns:')
for x in range(numberofcolumns):
justify = rawinput('Do you want left, center, or right?')
個別の列の正当化設定をリクエストする方法を尋ねているようです。これはnumofcolumns
数値です。これまでのプログラムに対する最も簡単な変更は、 を修正rawinput
しraw_input
、最後のプロンプトに列番号を追加し、結果をリストに保存することです。
nrows = int(raw_input('# rows: '))
ncolumns = int(raw_input('# columns: '))
justify = []
for x in range(ncolumns):
j = raw_input('Select left, center, or right justification in column '+str(x+1)+' by L,C,R: ')
justify.append(j.upper())
print justify
たとえば、ncolumns = 4
次のような 4 つの質問
Select left, center, or right justification in column 1 by L,C,R:
が表示され、ユーザーが L、R、C、L の文字を大文字または小文字で順番に入力すると、print ステートメントは を出力します['L', 'R', 'C', 'L']
。
もちろん、そのようなインターフェースは使いにくいものです。一方では、ユーザーが他の多くの仕様を入力した後に列 4 の仕様の誤りに気付いた場合、最初からやり直す必要があります。一方、プログラムはスクリプトから使用するのは困難です。以下に示すコード例は、後者の問題に対処していませんが、ユーザーが列の位置合わせ設定を任意の順序で簡単に行えるようにしています。このコードはメッセージを表示し、Select column justification settings, then click Go
L、C、R というラベルの付いたラジオ ボタンのグリッドを表示します。ユーザーが正当化の設定に満足して [Go] をクリックすると、プログラムは [1, 1, 1, 0, 2] のようなリストを出力します。は、次の図に示すように、C、C、C、L、R の選択を示します。
このデモ プログラムはnrows
orを入力せずncolumns
、 を設定しますncolumns=5
。
#!/usr/bin/env python
# Set up a simple horizontal menu with some editable radio buttons
import gtk
def bcallback(w, i, j): # Radio button callback
settings[i] = j
# create set of radio buttons
ncolumns = 5
W = gtk.Window()
W.connect('destroy', gtk.main_quit)
W.set_title('Column-justification settings')
box = gtk.HBox()
W.add(box)
for i in range(ncolumns):
col = gtk.VBox()
b = gtk.RadioButton(None, 'L')
rb = [b, gtk.RadioButton(b, 'C'), gtk.RadioButton(b, 'R')]
for j,b in enumerate(rb):
col.pack_start(b)
b.connect('toggled', bcallback, i, j)
box.pack_start(col)
b = gtk.Button(None, 'Go')
b.connect('button-press-event', gtk.main_quit)
box.pack_start(b)
W.show_all() # Make menu available for showing
settings = [0 for i in range(ncolumns)]
print 'Select column justification settings, then click Go'
gtk.main()
print settings