【发布时间】:2021-02-18 23:18:03
【问题描述】:
我正在尝试在 Tkinter 中创建一个相对简单的调查,例如表单,而且我对 GUI 框架还比较陌生。我在试图弄清楚为什么会有这么多不一致时遇到了真正的问题,尤其是在使用同一行中的网格放置+框架+多个小部件时。尤其是这个具体的例子。我将我所有的问题都整合到一个框架中,而且似乎成功了……差不多一半。尽管行看起来配合得很好,但列是整个事情爆发的地方。
qframe1 = Frame(question, bg='black')
qframe1.grid(row=1, padx = 20, sticky = W)
q1l = Label(qframe1, text = 'Question 1: How often do you eat at Mcdonalds?', font = ('Calibri', 14), bg = 'azure')
q1l.grid(columnspan = 4, pady = 5, sticky = W)
q1 = StringVar()
q1.set('None')
q1r1 = Radiobutton(qframe1, text = 'Everyday!', font = ('Calibri', 12), bg = 'azure', variable = q1, value = 'Always')
q1r1.grid(row=1, column = 0, pady = 5, sticky = W)
q1r2 = Radiobutton(qframe1, text = 'Sometimes', font = ('Calibri', 12), bg = 'azure', variable = q1, value = 'Sometimes')
q1r2.grid(row=1, column = 1, pady = 5, sticky = W)
q1r3 = Radiobutton(qframe1, text = 'Not Frequently', font = ('Calibri', 12), bg = 'azure', variable = q1, value = 'Infrequent')
q1r3.grid(row=1, column = 2, pady = 5, sticky = W)
q1r4 = Radiobutton(qframe1, text = 'Never', font = ('Calibri', 12), bg = 'azure', variable = q1, value = 'Never')
q1r4.grid(row=1, column = 3, pady = 5, sticky = W)
另外,我已经确定不是每个单选按钮的长度导致了问题。当我更改单选按钮的文本时,它们仍然被放置在相同的不规则位置。
这是另一部分琐事的代码。
q2l = Label(qframe1, text = 'Question 2: What meal do you normally order?', font = ('Calibri', 14), bg = 'azure')
q2l.grid(row=2, columnspan = 4, pady = 5, sticky = W)
q2 = StringVar()
q2.set('None')
q2r1 = Radiobutton(qframe1, text = 'Fries', font = ('Calibri', 12), bg = 'azure', variable = q2, value = 'Fries')
q2r1.grid(row=3, column = 0, pady = 5, sticky = W)
q2r2 = Radiobutton(qframe1, text = 'Hamburgers', font = ('Calibri', 12), bg = 'azure', variable = q2, value = 'Hamburgers')
q2r2.grid(row=3, column = 1, pady = 5, sticky = W)
q2r3 = Radiobutton(qframe1, text = 'Chicken Nuggets', font = ('Calibri', 12), bg = 'azure', variable = q2, value = 'Chicken Nuggets')
q2r3.grid(row=3, column = 2, pady = 5, sticky = W)
q2r4 = Radiobutton(qframe1, text = 'Coffee', font = ('Calibri', 12), bg = 'azure', variable = q2, value = 'Coffee')
q2r4.grid(row=3, column = 3, pady = 5, sticky = W)
这再次导致不规则间距。但这一次,间距与问题 1 中的单选按钮完全不同。并且对每个新问题的单选按钮集进行冲洗和重复。
右侧的按钮没有问题。可能是因为它们按行而不是按列对齐,这会导致间距问题。
bframe = Frame(question, bg='black')
bframe.grid(row=1, padx = 20, sticky = E)
audioq1 = Button(bframe, text = ' Listen to Audio', font = ('Calibri', 14), bg = 'brown1', fg = 'azure', image = sound, relief = SUNKEN, compound = LEFT, command = q1audio)
audioq1.grid(ipadx = 5, pady = 20)
audioq2 = Button(bframe, text = ' Listen to Audio', font = ('Calibri', 14), bg = 'brown1', fg = 'azure', image = sound, relief = SUNKEN, compound = LEFT, command = q2audio)
audioq2.grid(row = 1, ipadx = 5, pady = 20)
audioq3 = Button(bframe, text = ' Listen to Audio', font = ('Calibri', 14), bg = 'brown1', fg = 'azure', image = sound, relief = SUNKEN, compound = LEFT, command = q3audio)
audioq3.grid(row = 2, ipadx = 5, pady = 20)
audioq4 = Button(bframe, text = ' Listen to Audio', font = ('Calibri', 14), bg = 'brown1', fg = 'azure', image = sound, relief = SUNKEN, compound = LEFT, command = q4audio)
audioq4.grid(row = 3, ipadx = 5, pady = 20)
audioq5 = Button(bframe, text = ' Listen to Audio', font = ('Calibri', 14), bg = 'brown1', fg = 'azure', image = sound, relief = SUNKEN, compound = LEFT, command = q5audio)
audioq5.grid(row = 4, ipadx = 5, pady = 20)
任何帮助将不胜感激!
【问题讨论】:
-
您是否希望您的
Radiobutton占用相同数量的空间,而不管文本的长度如何?如果是这样,您应该查看weight。 -
qframe1未在您的第一个代码块中定义。将qframe = Frame(root)更改为qframe1 = Frame(root)后,输出不是您显示的内容。单选按钮无间隙地打包在一起。 -
嗨 acw1668!抱歉,这完全是我的错,我实际上在另一个框架之上有常规的 qframe,我不小心复制到我的帖子中,而不是 qframe1 的实际初始化。我有你所说的,它产生了我在帖子中的输出。编辑:我现在已经用固定代码编辑了帖子
-
同样回应Henry Yik,这里的问题不一定是重量。我之前尝试过通过定义单元格中的每一列来查看是否可以在这里均匀分配空间,但这似乎并不能解决单选按钮发生的不规则间距。
-
我仍然不明白您使用更新后的第一个代码块显示的内容。所有的单选按钮都打包在一起。更好地显示与
question变量相关的代码。