0

編集:申し訳ありませんが、私は新しいので自分の投稿に答えることができませんが、私はそれを理解しました:行「tki.Button(master、...」(最後のコード行から2番目)を削除すると、コードが実行されますまったく問題ありません.グリッドとボタンは、私が書いたようには機能しないと思います.

お手数をおかけして申し訳ありません。基本的に、ループして各値をGRIDのラジオボタンとして設定したい配列があります。後で、いくつかの配列をループしてより大きなグリッド メニューを生成しますが、この最初のループが機能するようになれば、おそらくそれを理解できるでしょう。

これが私のコードです:

import Tkinter as tki

master = tki.Tk()
frm = tki.Frame(master, bd = 16, relief = "sunken")
frm.grid()

tType = tki.StringVar()
tColumn = tki.IntVar()
tRow = tki.IntVar()
compType = ["iMac ", "Mac Mini ", "Mac Pro ", "Macbook ", "Macbook Air ", "Macbook Pro "]
tColumn.set(0)
tRow.set(0)

def radioCreate(typeArray):
    for t in typeArray:
        b = tki.Radiobutton(frm, text = t, variable = tType)
        b.config(indicatoron = 0, bd = 4, width = 16, value = t)
        b.grid(row = tRow.get(), column = tColumn.get())
        tRow.set((tRow.get() + 1))  #increment tRow for next run-through

def p():
    print tType.get()

radioCreate(compType)
tki.Button(master, command = p, text = "Display").pack()

master.mainloop()

ここで、これをグリッドで機能させようとしていることを思い出してください。これは、別の列に別の配列の別のデータを入力するためです。

4

1 に答える 1

0

問題はイ. これらの 2 行:

frm.grid()
...
tki.Button(...).pack()

pack同じアプリケーションでとを使用gridすることはまったく問題ありませんが、同じマスターを共有する 2 つのウィジェットでそれらを使用することはできません。

グリッドは、オプションに応じて、ウィジェットまたはそのマスターのサイズを変更する可能性があります。Pack は変更を認識し、オプションに基づいて 1 つまたは複数のウィジェットやマスターのサイズを変更しようとする場合があります。グリッドは変更に気づき、サイズが変更される可能性があります... パックは変更に気づき、サイズが変更されます...

于 2013-10-30T01:28:19.753 に答える