0

编辑:对不起,因为我是新手,所以我无法回答我自己的帖子,但我想通了:如果删除“tki.Button(master,...”这一行(倒数第二行代码),则代码运行很好。我猜网格和按钮不像我说的那样工作。

很抱歉打扰,但我很难弄清楚这里发生了什么。基本上我有一个数组,我想循环遍历并将每个值设置为网格中的单选按钮。稍后我将遍历几个数组以生成更大的网格菜单,但是一旦我让第一个循环工作,我可能会弄清楚这一点。

这是我的代码:

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

问题是我。这两行:

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

虽然在同一个应用程序中使用pack和使用它们是完全可以接受grid的,但您不能在共享同一个主控的两个小部件上使用它们。

Grid 可能会根据其选项更改小部件或其主控件的大小。Pack 会注意到这一变化,并且可能会根据其选项自行尝试调整一个或多个小部件和/或主控件的大小。Grid 会注意到变化,并且可能会调整大小... Pack 会注意到变化并调整大小,...

于 2013-10-30T01:28:19.753 回答