Как создать гистограмму matplotlib в python tkinter, которая расположена неправильно, не соответствует сетке 3x3 - PullRequest
0 голосов
/ 19 сентября 2018

Следующий код Python отображает гистограмму за двумя полями прокрутки текста и несколькими кнопками.Я действительно новичок в python , и я хотел бы знать, возможно ли изменить размер графика таким образом, чтобы:

(1) его левый край был выровнен с правыми краями текстовые поля прокрутки ;

(2) его верх выровнен с верхом кнопки 3 ;

(3) его нижняя часть совмещена с нижним краем нижнего поля прокрутки текста

(4) его правый край выровнен с правым краем экрана .

import tkinter
from tkinter import Button
from tkinter import scrolledtext as tkst
import numpy as np
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure


matplotlib.use('TkAgg')

def dummy():
    return

ww = tkinter.Tk()
ww.geometry('700x400')
ww.state('zoomed')

datalst = [31, 41, 59, 26, 53, 58, 97, 96, 36]
ff = Figure(figsize=(6,6), dpi=100)
xx = ff.add_subplot(111)
ind = np.arange(len(datalst))
rects1 = xx.bar(ind, datalst, 0.8)
canvas = FigureCanvasTkAgg(ff, master=ww)
canvas.draw()
canvas.get_tk_widget().pack()

butt1 = Button(ww,text='Button 1',command=dummy, height=1,width=20,state='normal')
butt1.place(x=12, y=2)
butt2 = Button(ww,text='Button 2',command=dummy, height=1,width=20,state='disabled')
butt2.place(x=162, y=2)
butt3 = Button(ww,text='Button 3',command=dummy, height=1,width=10,state='disabled')
butt3.place(x=320, y=100)
butt4 = Button(ww,text='Button 4',command=dummy, height=1,width=10,state='disabled')
butt4.place(x=320, y=128)
butt5 = Button(ww,text='Button 5',command=dummy, height=1,width=10,state='disabled')
butt5.place(x=320, y=156)
butt6 = Button(ww,text='Button 6',command=dummy, height=1,width=10,state='disabled')
butt6.place(x=320, y=184)
butt7 = Button(ww,text='Button 7',command=dummy, height=1,width=12,state='disabled')
butt7.place(x=420, y=394)
butt8 = Button(ww,text='Button 8',command=dummy, height=1,width=12,state='disabled')
butt8.place(x=600, y=394)

disp_txt1 = tkst.ScrolledText(ww, width=36, height=12, wrap=tkinter.WORD, state='disabled')
disp_txt1.pack(fill=tkinter.BOTH)
disp_txt1.place(x=410, y=100)
disp_txt2 = tkst.ScrolledText(ww, width=36, height=5, wrap=tkinter.WORD, state='disabled')
disp_txt2.pack(fill=tkinter.BOTH)
disp_txt2.place(x=410, y=300)

ww.mainloop()

Оранжевый прямоугольник ниже показываетгде я предполагаю, что график будет:

enter image description here

1 Ответ

0 голосов
/ 21 сентября 2018

Для этого необходимо импортировать tkinter as tk. Обратите внимание, что всегда полезно импортировать tkinter таким образом, поскольку он не импортирует namespaces , импортируя tkinter как tk .

.не было ошибки, вам нужно указать, где вы хотите расположить widget, а pack расположите его посередине доступного пространства в окне.Для этого используйте canvas.get_tk_widget().pack(side=tk.RIGHT), что означает правую часть экрана.Вы можете проверить документацию для атрибута.

ПОЛНЫЙ КОД

from tkinter import scrolledtext as tkst
import numpy as np
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk


matplotlib.use('TkAgg')

def dummy():
    return

ww = tk.Tk()
ww.geometry('700x400')
ww.state('zoomed')

datalst = [31, 41, 59, 26, 53, 58, 97, 96, 36]
ff = Figure(figsize=(6,6), dpi=100)
xx = ff.add_subplot(111)
ind = np.arange(len(datalst))
rects1 = xx.bar(ind, datalst, 0.8)
canvas = FigureCanvasTkAgg(ff, master=ww)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.RIGHT)

butt1 = tk.Button(ww,text='Button 1',command=dummy, height=1,width=20,state='normal')
butt1.place(x=12, y=2)
butt2 = tk.Button(ww,text='Button 2',command=dummy, height=1,width=20,state='disabled')
butt2.place(x=162, y=2)
butt3 = tk.Button(ww,text='Button 3',command=dummy, height=1,width=10,state='disabled')
butt3.place(x=320, y=100)
butt4 = tk.Button(ww,text='Button 4',command=dummy, height=1,width=10,state='disabled')
butt4.place(x=320, y=128)
butt5 = tk.Button(ww,text='Button 5',command=dummy, height=1,width=10,state='disabled')
butt5.place(x=320, y=156)
butt6 = tk.Button(ww,text='Button 6',command=dummy, height=1,width=10,state='disabled')
butt6.place(x=320, y=184)
butt7 = tk.Button(ww,text='Button 7',command=dummy, height=1,width=12,state='disabled')
butt7.place(x=420, y=394)
butt8 = tk.Button(ww,text='Button 8',command=dummy, height=1,width=12,state='disabled')
butt8.place(x=600, y=394)

disp_txt1 = tkst.ScrolledText(ww, width=36, height=12, wrap=tk.WORD, state='disabled')
disp_txt1.pack(fill=tk.BOTH)
disp_txt1.place(x=410, y=100)
disp_txt2 = tkst.ScrolledText(ww, width=36, height=5, wrap=tk.WORD, state='disabled')
disp_txt2.pack(fill=tk.BOTH)
disp_txt2.place(x=410, y=300)

ww.mainloop()

enter image description here

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