Итак, у меня есть этот кусок кода:
import tkinter as tk
root = tk.Tk()
root.geometry("400x300")
root.columnconfigure(0, weight=1, minsize=75)
root.rowconfigure(0, weight=1, minsize=50)
subjects = ["None"]
frm_new_grade = tk.Frame()
lbl_new_grade = tk.Label(text = "New Grade", font = "System")
lbl_add_subject = tk.Label(frm_new_grade, text = "Subject:", font = "System")
lbl_add_subject.grid(row=0, column=0, sticky = "E")
subject_value = tk.StringVar(frm_new_grade)
subject_value.set("Select an Option")
question_menu = tk.OptionMenu(frm_new_grade, subject_value, *subjects)
question_menu_menu = root.nametowidget(question_menu.menuname)
question_menu_menu.config(font = "System")
question_menu.config(font = "System")
question_menu.grid(row=0, column=1, sticky = "W")
btn_new_subject = tk.Button(frm_new_grade, text = "+", font = "System", width=2)
btn_new_subject.grid(row=0, column=2, padx=5, sticky = "W")
lbl_add_grade = tk.Label(frm_new_grade, text = "Grade:", font = "System")
lbl_add_grade.grid(row=1, column=0, sticky = "E")
ent_add_grade = tk.Entry(frm_new_grade, font = "System", width=18)
ent_add_grade.grid(row=1, column=1, columnspan=2, sticky = "W")
btn_add_grade = tk.Button(frm_new_grade, text = "Add Grade", font = "System")
btn_add_grade.grid(row=2, column=1, sticky = "W", pady=5)
frm_new_grade.grid()
root.mainloop()
Моя проблема в том, что я хочу, чтобы btn_new_subject
всегда был рядом с question_menu
, например, когда у question_menu
есть «Выбрать вариант», но не так, когда я выбираю «Нет».
Я пытался исправить это, используя columnspan
на ent_add_grade
(как вы видите в моем коде), я думал, что это со свойствами sticky
btn_new_subject
сделает так, чтобы они были рядом друг с другом, но вместо этого я получаю btn_new_subject
, как будто это не имел sticky
собственности.
Я новичок в программировании и python, поэтому любые отзывы будут оценены.
о, мне ужасно жаль, да, я имел в виду btn_new_subject
Замените sticky = "W"
на sticky = "EW"
в question_menu.grid(...)
.
Вы можете просто установить sticky = "EW"
в question_menu.grid(...)
, чтобы question_menu
заполнило пространство по горизонтали в ячейке.
Результат:
lbl_new_grade.grid()
отсутствует опечаткаlbl_new_grade(frm_new_grade,
row=x
, column=0
. X обозначает 1, 2 и 3. В то время как row=2
. And for
btn_add_grade.grid (строка = 3, столбец = 1root.geometry("235x150")
root.columnconfigure(1,
Вам решать.
Фрагмент для удобства чтения:
import tkinter as tk
root = tk.Tk()
root.geometry("235x150")
root.columnconfigure(0, weight=1, minsize=75)
root.rowconfigure(3, weight=1, minsize=50)
subjects = ["None"]
frm_new_grade = tk.Frame()
lbl_new_grade = tk.Label(frm_new_grade, text = "New Grade", bg='red', font = "System")
lbl_new_grade.grid(row=0, column=1)
lbl_add_subject = tk.Label(frm_new_grade, text = "Subject:", font = "System")
lbl_add_subject.grid(row=1, column=0, sticky = "WE", pady=10)
subject_value = tk.StringVar(frm_new_grade)
subject_value.set("Select an Option")
question_menu = tk.OptionMenu(frm_new_grade, subject_value, *subjects)
question_menu_menu = root.nametowidget(question_menu.menuname)
question_menu_menu.config(font = "System")
question_menu.config(font = "System")
question_menu.grid(row=1, column=1, sticky = "WE")
btn_new_subject = tk.Button(frm_new_grade, text = "+", font = "System", width=2)
btn_new_subject.grid(row=1, column=2, padx=5, sticky = "WE")
lbl_add_grade = tk.Label(frm_new_grade, text = "Grade:", font = "System")
lbl_add_grade.grid(row=2, column=0, sticky = "W")
ent_add_grade = tk.Entry(frm_new_grade, font = "System", width=18)
ent_add_grade.grid(row=2, column=1, columnspan=2, sticky = "W")
btn_add_grade = tk.Button(frm_new_grade, text = "Add Grade", font = "System")
btn_add_grade.grid(row=3, column=1, sticky = "W", pady=5)
frm_new_grade.grid()
root.mainloop()
Скриншот:
«Моя проблема в том, что я хочу, чтобы btn_add_subject был» — нет ничего с именем
btn_add_subject
. Вы имели в видуbtn_new_subject
илиbtn_add_grade
?