Tkinter проблема со структурой таблицы в табличке tkinter
В настоящее время я пытаюсь напечатать таблицу данных, собранных из базы данных, в графический интерфейс пользователя в tkinter, в данный момент я использую tabulate, который отлично работает в консоли, но как только я пытаюсь установить таблицу как текст как print как метка наклона таблицы и значения не выровнены. Я все еще новичок в tkinter, и поэтому мой код далеко не самый эффективный или действенный, есть идеи о том, почему это происходит или как?
order = (key_1,name_1,price_1,quantity_1,total_1)
table.append(order)
count +=1
print_table = (tabulate(table,headers=headers,tablefmt= "rst"))
c.fetchall()
conn.commit()
conn.close()
label_table = tk.Label(self,text=print_table)
label_table.pack()
Ожидаемый результат:! File:///var/folders/59/89rdtwpd4vnf6pv7pbd3l60m0000gn/T/com.apple.Safari/WebKitDropDestination-rwh55dGn/Screen%20Shot%202019-02-03%20at%2011.49.29%20P.png
Фактический результат:
! Файл: ///var/folders/59/89rdtwpd4vnf6pv7pbd3l60m0000gn/T/com.apple.Safari/WebKitDropDestination-tZziKT9D/Screen%20Shot%202019-02-03%20at%2011.47.15%20PM.png
2 ответа
Я очень рекомендую создать сетку tk.Entry
виджеты, где вы размещаете свои заголовки и значения в отдельных записях. Если вы записали tk.Entry
виджеты объектов в списке вы могли бы вызывать их по отдельности за пределами цикла, если вы предпочитаете это. Вы могли бы заменить tk.Label
виджет на месте tk.Entry
с другими изменениями форматирования, если вы были неравнодушны к Label
виджет.
tableWindow=tk.Toplevel()
tableHeaderList=["Header1","Header2","Header3","Header4"]
for i in range(height): #Rows
for j in range(width): #Columns
b = tk.Entry(tableWindow, text="")
b.grid(row=i, column=j)
if i == 0:
b.insert(0,tableHeaderList[j])
Я предлагаю вам использовать моноширинный шрифт. Я сталкиваюсь с той же проблемой и использую шрифт Cascadia Mono, и это сработало. используйте параметрfont=("Cascadia Mono", 10)
в этикетке. Надеюсь, поможет.