Кнопка не отображается в Tkinter, даже с менеджером геометрии - PullRequest
1 голос
/ 29 июня 2019

Я разрабатываю приложение в tkinter, но есть кнопка, которая не отображается. Кнопка имеет решающее значение для работы программы.

import tkinter as tk

global field

root = tk.Tk()
root.resizable(0,0)

root.geometry('368x200')

header = tk.Label(root, text = 'Header Text', pady=20)
header.config(font = ('Tahoma', 24))
header.grid(row = 0, columnspan=2)

enter_here = tk.Label(root, text = 'Question: ')
enter_here.grid(row = 1, column = 0, pady = 50)
field = tk.Entry(root, width = 50)
field.grid(row = 1, column = 1, pady = 50)

answer = tk.Button(root, text = 'Answer', command = answerf, width=10)
answer.grid(row=2, column=2)

root.mainloop()

Заголовок, текст заголовка и буквы являются заполнителями. Мне просто нужно выяснить, как использовать кнопку. Я оглянулся и не смог найти никаких ответов; большинство людей просто забыли менеджер геометрии.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Вы должны быть осторожны, какие значения вы передаете различным параметрам виджетов tkinter.В приведенном выше случае это причина, по которой вы не можете видеть button.

Изменить

field = tk.Entry(root, width = 50)
field.grid(row = 1, column = 1, pady = 50)

на

field = tk.Entry(root, width = 25)
field.grid(row = 1, column = 1, pady = 30)

И,

answer = tk.Button(root, text = 'Answer', command = answerf, width=10)
answer.grid(row=2, column=2)

до

answer = tk.Button(root, text = 'Answer', command = answerf, width=10)
answer.grid(row=1, column=2)

выход:

enter image description here

0 голосов
/ 29 июня 2019

Проблема в том, что вы заставляете окно иметь слишком малый размер для объектов внутри него.

Простое исправление - удалить эту строку:

root.geometry('368x200')

Если вы настаиваете на сохранении этой строки, вам нужно настроить параметры других виджетов так, чтобы они помещались в ограниченном пространстве. Например, вы можете уменьшить размер виджетов или уменьшить отступы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...