让我的ListBox成为网格配置的Tk中的适当高度是有问题的。它应该有6行高,但比那要低得多。
我在运行python3.8。
我正在研制一台Windows 10电脑,但我认为这不重要。
我想我刚刚错过了一些小东西。
任何帮助都是非常感谢的。
我在这里找过了,却找不到答案。
from tkinter import *
import tkinter.font as tkFont
from tkinter import filedialog
window = Tk()
btn_font = tkFont.Font(family='Ariel', size=20, weight='bold')
# Define functions here
def main_menu_gui():
pass
main_menu_button = Button(window, text='Main Menu',
command=main_menu_gui, font=btn_font, width=13)
main_menu_button.grid(row=0, column=0, padx=5, pady=3, sticky=W)
new_question_button = Button(window, text='New Question',
command=main_menu_gui, font=btn_font, width=13)
new_question_button.grid(row=0, column=1, padx=5, pady=3)
save_question_button = Button(window, text='Save Question',
command=main_menu_gui, font=btn_font, width=13)
save_question_button.grid(row=0, column=2, padx=5, pady=3)
delete_question_button = Button(window, text='Delete Question',
command=main_menu_gui, font=btn_font, width=13)
delete_question_button.grid(row=0, column=3, padx=5, pady=3)
question_label = Label(text='Question', font=btn_font, justify="left")
question_label.grid(row=1, column=0, padx=5, pady=3)
question_entry = Entry(window, font=btn_font, width=47)
question_entry.grid(row=1, column=1, columnspan=3, padx=5, pady=3)
question_1_label = Label(text=f'Answer 1', font=btn_font, justify="left")
question_1_label.grid(row=2, column=0, padx=5, pady=3)
question_1_entry = Entry(window, font=btn_font, width=47)
question_1_entry.grid(row=2, column=1, columnspan=3, padx=5, pady=3)
question_2_label = Label(text=f'Answer 2', font=btn_font, justify="left")
question_2_label.grid(row=3, column=0, padx=5, pady=3)
question_2_entry = Entry(window, font=btn_font, width=47)
question_2_entry.grid(row=3, column=1, columnspan=3, padx=5, pady=3)
question_3_label = Label(text=f'Answer 2', font=btn_font, justify="left")
question_3_label.grid(row=4, column=0, padx=5, pady=3)
question_3_entry = Entry(window, font=btn_font, width=47)
question_3_entry.grid(row=4, column=1, columnspan=3, padx=5, pady=3)
question_4_label = Label(text=f'Answer 4', font=btn_font, justify="left")
question_4_label.grid(row=5, column=0, padx=5, pady=3)
question_4_entry = Entry(window, font=btn_font, width=47)
question_4_entry.grid(row=5, column=1, columnspan=3, padx=5, pady=3)
right_label = Label(text='Right Feedback', font=btn_font, justify="left")
right_label.grid(row=6, column=0, padx=5, pady=3)
right_entry = Entry(window, font=btn_font, width=47)
right_entry.grid(row=6, column=1, columnspan=3, padx=5, pady=3)
wrong_label = Label(text='Wrong Feedback', font=btn_font, justify="left")
wrong_label.grid(row=7, column=0, padx=5, pady=3)
wrong_entry = Entry(window, font=btn_font, width=47)
wrong_entry.grid(row=7, column=1, columnspan=3, padx=5, pady=3)
question_list = Listbox(window, height=6)
question_scroll = Scrollbar(question_list, orient=VERTICAL)
question_list.config(yscrollcommand=question_scroll.set)
question_scroll.config(command=question_list.yview)
question_list.grid(row=8, column=0, columnspan=4, padx=5, pady=3, sticky=N+E+S+W)
question_list.columnconfigure(0, weight=3)
question_scroll.grid(column=4, sticky=N+S)
window.mainloop()

发布于 2019-11-20 00:05:59
问题的根源在于这一行:
question_scroll = Scrollbar(question_list, orient=VERTICAL)注意,您正在将滚动条放入列表框中。然后在滚动条上调用grid时,grid的默认行为是增长或缩小小部件以适应其子部件,因此列表框的高度正在缩小以适应滚动条。
不必将滚动条放在question_list中,而是需要将其放在window中。
question_scroll = Scrollbar(window, orient=VERTICAL)然后,您会注意到正在将滚动条放在列表框下面的行中。相反,您应该将它放在同一行:
question_scroll.grid(row=8, column=4, sticky=N+S)如果您希望滚动条显示在列表框中,这在现代UI中是相当常见的,您可以创建一个单独的框架,并将列表框和滚动条放在框架内。如果您给框架一个边框,然后删除列表框的边框,滚动条将显示在列表框旁边。
https://stackoverflow.com/questions/58944436
复制相似问题