我一直在尝试用tkinter(Python3)创建一个简单的调查问卷,但我遇到了一个问题,每当我在列表框下面编辑一个标签时,列表框就会移动。你知道吗
为了说明我的意思,这里有两张图片:http://imgur.com/a/4v92O
有人能帮我理解为什么箱子不能保持静止吗?你知道吗
class Questionnaire(Frame):
# GUI
def __init__(self, master):
# Initialise
Frame.__init__(self,master)
self.grid()
self.createProgSelect()
self.createQuestions()
def createProgSelect(self):
# Degree programme label
lblProg = Label(self, text='Degree Programme:', font=('MS', 8,'bold'))
lblProg.grid(row=1, column=0, columnspan=2, sticky=NE)
# Listbox
self.listProg.configure(yscrollcommand=scroll.set)
self.listProg = Listbox(self, height= 3)
self.listProg.grid(row=1, column=2, columnspan=2, sticky=E)
# Scrollbar
scroll = Scrollbar(self, command= self.listProg.yview)
scroll.grid(row=1, column=4, sticky=W)
# Listbox items
for item in ["CS", "CS with", "BIS", "SE", "Joints",""]:
self.listProg.insert(END, item)
self.listProg.selection_set(END)
def createQuestions(self):
# Strongly agree
lblStrAgr = Label(self, text = 'Strongly \n Agree', font=('MS', 8,'bold'))
lblStrAgr.grid(row=3, column= 4, rowspan=2)
# Partly agree
lblStrAgr = Label(self, text = 'Partly \n Agree', font=('MS', 8,'bold'))
lblStrAgr.grid(row=3, column= 5, rowspan=2)
# Partly disagree
lblStrAgr = Label(self, text = 'Partly \n Disagree', font=('MS', 8,'bold'))
lblStrAgr.grid(row=3, column= 6, rowspan=2)
# Strongly disagree
lblStrAgr = Label(self, text = 'Strongly \n Disagree', font=('MS', 8,'bold'))
lblStrAgr.grid(row=3, column= 7, rowspan=2)
self.varQ1 = IntVar()
# Label for question 1
Q1Label = Label(self, text='1. Short text')
Q1Label.grid(row=5, column=0)
# Radio buttons for question 1
R1Q1 = Radiobutton(self, variable=self.varQ1, value=4)
R1Q1.grid(row=5, column= 4)
R2Q1 = Radiobutton(self, variable= self.varQ1, value=3)
R2Q1.grid(row=5, column= 5)
R3Q1 = Radiobutton(self, variable= self.varQ1, value=2)
R3Q1.grid(row=5, column= 6)
R4Q1 = Radiobutton(self, variable= self.varQ1, value=1)
R4Q1.grid(row=5, column= 7)
抱歉问了个有点愚蠢的问题。你知道吗
您正在创建网格。网格表示特定列中的所有项具有相同的宽度,并且特定行中的所有项具有相同的高度。例如,如果给定列的宽度增加,则右侧的所有列都会自然移动以腾出空间。你知道吗
您的列表框位于第3列。您的标签位于第0列。将标签配置为具有非常宽的文本时,会导致列0展开以容纳标签。这将导致以下所有列移到上面。你知道吗
我想一个解决方案是让标签跨越三列(
...grid(..., columnspan=3)
),尽管我不知道你到底想实现什么。你知道吗相关问题 更多 >
编程相关推荐