#python #tkinter
#python #tkinter
Вопрос:
Я извлекаю данные из MS SQL и отображаю их на Python, используя виджет ввода tkinter для графического интерфейса пользователя. Однако установка width в параметре дает всем столбцам одинаковую ширину, поэтому столбцы, содержащие ID / ключи, имеют ненужное пространство, в то время как столбцы, требующие большей ширины, имеют усеченный текст.
Вот мой код:
class Table:
def __init__(self, root, totalRows, totalColoumns, rows):
# code for creating table
for i in range(totalRows):
for j in range(totalColoumns):
self.e = tkinter.Entry(root, width=50, fg='blue',
font=('Arial', 12))
self.e.grid(row=i, column=j)
self.e.insert(tkinter.END, rows[i][j])
здесь параметров root
, totalRows
, totalColoumns
, rows
обеспечиваются функции телефонам указанным выше фрагмент кода.
Это выходные данные всех сгенерированных столбцов, где первые два столбца являются первичным ключом и внешним ключом:
Комментарии:
1. Почему бы вам не использовать разную ширину в зависимости от столбца вместо того, чтобы использовать
width=50
везде? Вы могли бы составить список ширин в зависимости от номера столбца.2. @j_4321 Пожалуйста, извините за мои глупые вопросы, но как мне указать, что я хочу, чтобы столбец номер 3 имел ширину 80, в то время как столбцы 1 и 2 могут иметь ширину 10?
Ответ №1:
Здесь я предполагаю, что два первых столбца могут быть маленькими, например, шириной 10, в то время как все остальные будут больше, например, шириной 80.
Для достижения этого существует множество способов изменить цикл for, создающий таблицу. Например, вы можете создать список ширин:
widths = [10, 10] [80]*(totalColoumns - 2)
# code for creating table
for i in range(totalRows):
for j in range(totalColoumns):
self.e = tkinter.Entry(root, width=widths[j], fg='blue',
font=('Arial', 12))
self.e.grid(row=i, column=j)
self.e.insert(tkinter.END, rows[i][j])