1

1 つの列に 4 つの水平方向のボタンを配置したいと考えています (UI 全体が 1 つの列です)。パック ジオメトリ マネージャーでこれを行う方法がわかりません。ボタンを縦に配置することにしましたが、これを行う方法が必要です。私は Python を初めて使用するので、コードは非常に単純です。

v = IntVar()

Radiobutton(root, text="Red", variable=v, value=1, command = red).grid(row=1) 
Radiobutton(root, text="Blue", variable=v, value=2, command = blue).grid(row=2)
Radiobutton(root, text="Green", variable=v, value=3, command = green).grid(row=3)
Radiobutton(root, text="Other", variable=v, value=4, command = Other).grid(row=4)

それらを同じ行に配置すると、それらは互いに積み重ねられます。ボタンのグループ化に関する別の投稿を読みましたが、それは Android アプリ用でした。

4

1 に答える 1

5

ボタンを縦に並べると、すべてが 1 つの列に収まります。「1 つの行に 4 つの水平ボタンを配置したい
」という意味であると仮定すると、 各ボタンがその行の個別の列にある場合 、最初の推奨事項はフレームを使用してボタンを含めることです。

のオプションを指定してgridを使用した例を次に示します。

import Tkinter as tki # tkinter in Python 3

root = tki.Tk()

frm = tki.Frame(root, bd=16, relief='sunken')
frm.grid()

var = tki.StringVar()

mild = tki.Radiobutton(frm, text='Mild', variable=var)
mild.config(indicatoron=0, bd=4, width=12, value='Mild')
mild.grid(row=0, column=0)

medium = tki.Radiobutton(frm, text='Medium', variable=var)
medium.config(indicatoron=0, bd=4, width=12, value='Medium')
medium.grid(row=0, column=1)

hot = tki.Radiobutton(frm, text='Hot', variable=var)
hot.config(indicatoron=0, bd=4, width=12, value='Hot')
hot.grid(row=0, column=2)

root.mainloop()

または、sideオプションを に設定してpackを使用することもできます。 ボタンがループで作成され、辞書のキーにバインドされる例を次に示します。'left'

import Tkinter as tki

def print_var(*args):
    print root.getvar(name=args[0])
    # or
    print var.get()

root = tki.Tk()

frm = tki.Frame(root, bd=16, relief='sunken')
frm.pack()

var = tki.StringVar()
var.trace('w', print_var)

b_dict = {'Mild':0, 'Medium':0, 'Hot':0}

for key in b_dict:
    b_dict[key] = tki.Radiobutton(frm, text=key, bd=4, width=12)
    b_dict[key].config(indicatoron=0, variable=var, value=key)
    b_dict[key].pack(side='left')

root.mainloop()

変数クラスとそのメソッドに関する情報は、 →こちらにあります。

于 2012-04-16T19:32:39.900 に答える