我試圖在tkinter中創建一個窗口來顯示我的計算結果。它應該有一個圖表和一些小表格。我無法按照我需要的方式安排他們。以下是示例代碼。在這種情況下,我只顯示一個圖表和一個表格。在tkinter的窗口中更改表格的位置
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk
from tkinter import ttk
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(0,30,size=(15, 3)), columns=list('ABC'))
df1['index'] = df1.index
l1 = [1,2,3,4,5]
l2 = [6,7,8,9,10]
l3 = [100,200,300,400,500]
root = tk.Tk()
lf = ttk.Labelframe(root, text='Results')
lf.grid(row=0, column=0, sticky='nwes', padx=3, pady=3)
fig = Figure(figsize=(10,5), dpi=70)
ax = fig.add_subplot(111)
df1.plot(x='index', y=['A', 'B', 'C'], ax=ax)
canvas = FigureCanvasTkAgg(fig, master=lf)
canvas.show()
canvas.get_tk_widget().grid(row=0, column=0)
label = ttk.Label(root, text= 'Res_values')
label.config(font=("Courier", 20))
label.place(x = 810, y = 70)
li1 = l1
li2 = l2
li3 = l3
list1 = tk.Listbox(root)
list2 = tk.Listbox(root)
list3 = tk.Listbox(root)
for item in li1:
list1.insert(0,item)
for item in li2:
list2.insert(0,item)
for item in li3:
list3.insert(0,item)
list1.grid(row=0, column=1)
list2.grid(row=0, column=2)
list3.grid(row=0, column=3)
root.mainloop()
代碼執行的結果如下所示:
我想表被放置更高,更接近圖形和列變得更小。
就像那個
是否有可能做到這一點?
UPD我改變它表示代碼的部分在哪裏放置表
label = ttk.Label(root, text= 'Res_values')
label.config(font=("Courier", 20))
label.grid(row=0, column = 1, columnspan=3, sticky='N')
而且
list1.grid(row=1, column=1, sticky='E'+'W')
list2.grid(row=1, column=2, sticky='E'+'W')
list3.grid(row=1, column=3, sticky='E'+'W')
結果看起來是這樣的:
任何人都可以請解釋我做錯了什麼?
爲了響應您的編輯,您可以將'LabelFrame'的'rowspan'參數更改爲2,以便所有內容都可以重新排列。 – SneakyTurtle